light_auth.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. package auth
  2. import (
  3. "fmt"
  4. "git.qianqiusoft.com/qianqiusoft/light-apiengine/entitys"
  5. sysmodel "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
  6. sysutils "git.qianqiusoft.com/qianqiusoft/light-apiengine/utils"
  7. "strings"
  8. )
  9. type LightAuth struct {
  10. }
  11. func init() {
  12. lightAuth := &LightAuth{}
  13. RegisterAuth("qianqiusoft.com", lightAuth)
  14. }
  15. func (la *LightAuth) Init() {
  16. }
  17. func (la *LightAuth) Login(c *entitys.CtrlContext) {
  18. var logininfo sysmodel.LoginInfo
  19. c.Ctx.BindJSON(&logininfo)
  20. //fmt.Println(logininfo)
  21. var user sysmodel.SysUser
  22. ret, err := c.PlatformDbEngine.SQL(sysmodel.SqlUserLogin, logininfo.Account).Get(&user)
  23. if ret && err == nil {
  24. // 输错密码5次,锁定账户10分钟不允许登录
  25. if !sysutils.GetGlobalLoginCheck().CheckErrNum(user.LoginId) {
  26. c.Ctx.JSON(200, sysmodel.SysReturn{400, "输错密码5次,锁定账户10分钟!", nil})
  27. return
  28. }
  29. md5Pwd := sysutils.HashPassword(logininfo.Password, "")
  30. //密码错误
  31. if !strings.EqualFold(user.Password, md5Pwd) {
  32. if !sysutils.GetGlobalLoginCheck().AddPwdErrNum(user.LoginId) {
  33. c.Ctx.JSON(200, sysmodel.SysReturn{400, "输错密码5次,锁定账户10分钟!", nil})
  34. return
  35. }
  36. c.Ctx.JSON(200, sysmodel.SysReturn{400, "password incorrect!", nil})
  37. return
  38. }
  39. //token := &entitys.Token{}
  40. //timestamp_str := strconv.FormatUint(timestamp, 10)
  41. //sec_tooken := sysutils.GenerateToken(logininfo.Account + timestamp_str)
  42. //if v := sysutils.GetGlobalTokenStore().Get(sec_tooken); v == nil {
  43. // token.AccessToken = sec_tooken
  44. // token.RefreshToken = sec_tooken
  45. // token.LoginID = logininfo.Account
  46. // token.UserId = user.Id
  47. // token.Result = 200
  48. // //token.Password = pwd
  49. // token.ServerIp = ""
  50. // token.Domain = user.Domain
  51. // sysutils.GetGlobalTokenStore().Set(sec_tooken, token)
  52. // //sysutils.GetGlobalTokenStore().Set(token.LoginID+user.Domain, token)
  53. //} else {
  54. // token = v
  55. //}
  56. //// 查找Business对应的用户信息
  57. //var businessUser sysmodel.SysUser
  58. //_, err = c.App.GetBusinessDb(user.Domain).Table(new(sysmodel.SysUser)).ID(user.Id).Get(&businessUser)
  59. //if err != nil {
  60. // c.Ctx.JSON(200, sysmodel.SysReturn{400, "business db con't found user!", nil})
  61. // return
  62. //}
  63. //
  64. //data := sysmodel.LoginReturnInfo{}
  65. //data.Id = user.Id
  66. //data.LoginId = user.LoginId
  67. //data.Token = token.AccessToken
  68. //data.Type = user.Type
  69. //data.Domain = user.Domain
  70. //data.OrgId = businessUser.OrgId
  71. //data.Name = businessUser.Name
  72. //data.Mobile = businessUser.Mobile
  73. //data.Email = businessUser.Email
  74. //
  75. //// 查找用户对应角色
  76. //var roles []sysmodel.SysRole
  77. //c.App.GetBusinessDb(user.Domain).SQL("select sys_role.* from sys_user_role, sys_role where sys_user_role.role_id = sys_role.id and sys_role.del_flag = 0 and sys_user_role.user_id = ? order by sys_role.priority asc", user.Id).Find(&roles)
  78. //data.Roles = roles
  79. data, err := AddToGlobalTokenStore(c, &user)
  80. if err != nil {
  81. c.Ctx.JSON(200, sysmodel.SysReturn{400, err.Error(), nil})
  82. return
  83. }
  84. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", data})
  85. } else {
  86. //fmt.Println(err.Error())
  87. c.Ctx.JSON(200, sysmodel.SysReturn{400, "username or password incorrect!", nil})
  88. }
  89. }
  90. func (la *LightAuth) Logout(c *entitys.CtrlContext) {
  91. token := c.Ctx.GetHeader("token")
  92. fmt.Println("delete token: ", token)
  93. sysutils.GetGlobalTokenStore().Remove(token)
  94. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  95. }