login.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package api
  2. import (
  3. "github.com/torkelo/grafana-pro/pkg/api/dtos"
  4. "github.com/torkelo/grafana-pro/pkg/bus"
  5. "github.com/torkelo/grafana-pro/pkg/log"
  6. "github.com/torkelo/grafana-pro/pkg/middleware"
  7. m "github.com/torkelo/grafana-pro/pkg/models"
  8. "github.com/torkelo/grafana-pro/pkg/util"
  9. )
  10. func LoginView(c *middleware.Context) {
  11. if err := setIndexViewData(c); err != nil {
  12. c.Handle(500, "Failed to get settings", err)
  13. return
  14. }
  15. c.HTML(200, "index")
  16. }
  17. func LoginPost(c *middleware.Context, cmd dtos.LoginCommand) {
  18. userQuery := m.GetUserByLoginQuery{LoginOrEmail: cmd.User}
  19. err := bus.Dispatch(&userQuery)
  20. if err != nil {
  21. c.JsonApiErr(401, "Invalid username or password", err)
  22. return
  23. }
  24. user := userQuery.Result
  25. passwordHashed := util.EncodePassword(cmd.Password, user.Salt)
  26. if passwordHashed != user.Password {
  27. c.JsonApiErr(401, "Invalid username or password", err)
  28. return
  29. }
  30. loginUserWithUser(user, c)
  31. c.JsonOK("User logged in")
  32. }
  33. func loginUserWithUser(user *m.User, c *middleware.Context) {
  34. if user == nil {
  35. log.Error(3, "User login with nil user")
  36. }
  37. c.Session.Set("userId", user.Id)
  38. }
  39. func LogoutPost(c *middleware.Context) {
  40. c.Session.Delete("userId")
  41. c.JSON(200, util.DynMap{"status": "logged out"})
  42. }