loginAction.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package common
  2. import (
  3. "github.com/gogf/gf/crypto/gmd5"
  4. "github.com/gogf/gf/frame/g"
  5. "github.com/gogf/gf/net/ghttp"
  6. "github.com/gogf/gf/os/glog"
  7. "github.com/gogf/gf/util/gconv"
  8. "gmanager/app/constants"
  9. "gmanager/app/service/log"
  10. "gmanager/app/service/user"
  11. "gmanager/library"
  12. "gmanager/library/base"
  13. "gmanager/library/bean"
  14. )
  15. // Login 登录页面
  16. func Login(r *ghttp.Request) {
  17. err := r.Response.WriteTpl("pages/login.html", g.Map{})
  18. if err != nil {
  19. glog.Error(err)
  20. }
  21. }
  22. func Index(r *ghttp.Request) {
  23. err := r.Response.WriteTpl("pages/home.html", g.Map{
  24. "id": 1,
  25. "name": "flyfox",
  26. "title": g.Config().GetString("setting.title"),
  27. })
  28. if err != nil {
  29. glog.Error(err)
  30. }
  31. }
  32. // LoginSubmit 登录认证
  33. func LoginSubmit(r *ghttp.Request) (string, interface{}) {
  34. username := r.GetString("username")
  35. passwd := r.GetString("passwd")
  36. if username == "" || passwd == "" {
  37. base.Fail(r, "用户名或密码为空")
  38. }
  39. model, err := user.GetByUsername(username)
  40. if err != nil {
  41. base.Error(r, "服务异常,请联系管理员")
  42. }
  43. if model == nil || model.Id <= 0 {
  44. base.Fail(r, "用户名或密码错误.")
  45. }
  46. if model.Enable != constants.EnableYes {
  47. base.Fail(r, "账号状态异常,请联系管理员")
  48. }
  49. reqPassword, err2 := gmd5.Encrypt(passwd + model.Salt)
  50. if err2 != nil {
  51. glog.Error("login password encrypt error", err2)
  52. base.Error(r, "用户名或者密码错误:"+username)
  53. }
  54. if reqPassword != model.Password {
  55. base.Fail(r, "用户名或者密码错误!")
  56. }
  57. sessionUser := bean.SessionUser{
  58. Id: model.Id,
  59. Uuid: model.Uuid,
  60. RealName: model.RealName,
  61. Username: model.Username,
  62. }
  63. // 登录日志
  64. model.UpdateTime = library.GetNow()
  65. model.UpdateId = model.Id
  66. log.SaveLog(model, constants.LOGIN)
  67. return username, sessionUser
  68. }
  69. // 登出
  70. func LogoutBefore(r *ghttp.Request) bool {
  71. userId := base.GetUser(r).Id
  72. model, err := user.GetById(gconv.Int64(userId))
  73. if err != nil {
  74. glog.Warning("logout getUser error", err)
  75. return false
  76. } else if model.Id != userId {
  77. // 登出用户不存在
  78. glog.Warning("logout userId error", userId)
  79. return false
  80. }
  81. // 登出日志
  82. model.UpdateTime = library.GetNow()
  83. model.UpdateId = userId
  84. log.SaveLog(model, constants.LOGOUT)
  85. return true
  86. }