auth.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. package handler
  2. import (
  3. "context"
  4. "dashoo.cn/common_definition/admin/user_def"
  5. "dashoo.cn/common_definition/comm_def"
  6. "dashoo.cn/micro/app/common/gtoken"
  7. "dashoo.cn/opms_libary/micro_srv"
  8. "github.com/gogf/gf/errors/gerror"
  9. "github.com/gogf/gf/encoding/gjson"
  10. "github.com/gogf/gf/frame/g"
  11. "github.com/gogf/gf/os/glog"
  12. "github.com/gogf/gf/util/gconv"
  13. "dashoo.cn/common_definition/auth"
  14. )
  15. type Auth struct{}
  16. var gfToken *gtoken.GfToken
  17. func init() {
  18. // 启动gtoken
  19. gfToken = &gtoken.GfToken{
  20. Timeout: 24 * 60 * 60 * 1000, // 24小时
  21. EncryptKey: []byte(g.Config().GetString("gtoken.encrypt-key")),
  22. CacheMode: g.Config().GetInt8("gtoken.cache-mode"),
  23. MultiLogin: g.Config().GetBool("gtoken.multi-login"),
  24. }
  25. gfToken.Start()
  26. }
  27. // Login 用户登录验证
  28. func (e *Auth) Login(ctx context.Context, req *user_def.LoginReq, rsp *comm_def.CommonMsg) error {
  29. // 获取租户码
  30. tenant, err := micro_srv.GetTenant(ctx)
  31. if err != nil {
  32. return err
  33. }
  34. g.Log().Info("Received User.Login request @ " + tenant)
  35. // 参数验证
  36. if req.UserName == "" || req.Password == "" {
  37. return NoParamsErr
  38. }
  39. service, err := user.NewService(tenant)
  40. if err != nil {
  41. g.Log().Error(err)
  42. return gerror.New("系统异常,请重新尝试")
  43. }
  44. userInfo, err := service.Login(ctx, tenant, req.UserName, pridecrypt)
  45. rsp.Data = userInfo
  46. rsp.Code = code
  47. rsp.Msg = msg
  48. return nil
  49. }
  50. // LogOut 退出登录
  51. //func (e *Auth) LogOut(ctx context.Context, req interface{}, rsp *comm_def.CommonMsg) error {
  52. // // 获取租户码
  53. // tenant, err := micro_srv.GetTenant(ctx)
  54. // if err != nil {
  55. // return err
  56. // }
  57. // g.Log().Info("Received User.LogOut request @ " + tenant)
  58. // token, err := micro_srv.GetToken(ctx)
  59. // if err != nil {
  60. // return err
  61. // }
  62. // if token == "" {
  63. // return NoParamsErr
  64. // }
  65. // service, err := user.NewService(tenant)
  66. // if err != nil {
  67. // g.Log().Error(err)
  68. // return gerror.New("系统异常,请重新尝试")
  69. // }
  70. // err = service.LogOut(ctx, token)
  71. // _, err, code, msg := myerrors.CheckError(err)
  72. // if err != nil {
  73. // glog.Error(err)
  74. // return err
  75. // }
  76. // rsp.Code = code
  77. // rsp.Msg = msg
  78. // return nil
  79. //}
  80. func (e *Auth) GetToken(ctx context.Context, req *auth.Request, rsp *auth.Response) (err error) {
  81. glog.Info("Received Auth.GetToken request, UserKey:", req.UserKey, " @ ", req.Tenant)
  82. // 获取Data,换成对象
  83. var json interface{}
  84. if req.Data != "" {
  85. json, err = gjson.DecodeToJson(req.Data)
  86. if err != nil {
  87. return err
  88. }
  89. }
  90. tokenResp := gfToken.GetOrGenToken(req.Tenant, req.UserKey, req.Uuid, json)
  91. if err := gconv.Struct(tokenResp, rsp); err != nil {
  92. return err
  93. }
  94. glog.Info(tokenResp.DataString())
  95. return nil
  96. }
  97. func (e *Auth) RemoveToken(ctx context.Context, reqToken string, rsp *auth.Response) error {
  98. glog.Info("Received Auth.RemoveToken request, token:", reqToken)
  99. tokenResp := gfToken.RemoveToken(reqToken)
  100. if err := gconv.Struct(tokenResp, rsp); err != nil {
  101. return err
  102. }
  103. return nil
  104. }
  105. func (e *Auth) ValidToken(ctx context.Context, reqToken string, rsp *auth.Response) error {
  106. glog.Info("Received Auth.ValidToken request, token:", reqToken)
  107. tokenResp := gfToken.ValidToken(reqToken)
  108. if err := gconv.Struct(tokenResp, rsp); err != nil {
  109. return err
  110. }
  111. return nil
  112. }