api_login.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package api
  2. import "github.com/gin-gonic/gin"
  3. func init() {
  4. addRoutes(func(self *HttpServer) {
  5. self.router.GET("/login/*_", self.index)
  6. self.router.POST("/login", self.loginPost)
  7. })
  8. }
  9. type loginJsonModel struct {
  10. Email string `json:"email" binding:"required"`
  11. Password string `json:"password" binding:"required"`
  12. Remember bool `json:"remember"`
  13. }
  14. func (self *HttpServer) loginPost(c *gin.Context) {
  15. var loginModel loginJsonModel
  16. if c.EnsureBody(&loginModel) {
  17. if loginModel.Email == "manu" && loginModel.Password == "123" {
  18. session, _ := sessionStore.Get(c.Request, "grafana-session")
  19. session.Values["login"] = true
  20. session.Save(c.Request, c.Writer)
  21. c.JSON(200, gin.H{"status": "you are logged in"})
  22. } else {
  23. c.JSON(401, gin.H{"status": "unauthorized"})
  24. }
  25. }
  26. }
  27. func (self *HttpServer) authMiddleware() gin.HandlerFunc {
  28. return func(c *gin.Context) {
  29. session, _ := sessionStore.Get(c.Request, "grafana-session")
  30. if c.Request.URL.Path != "/login" && session.Values["login"] == nil {
  31. c.Writer.Header().Set("Location", "/login")
  32. c.Abort(302)
  33. }
  34. session.Save(c.Request, c.Writer)
  35. }
  36. }