adminLoginByCapLogic.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // Code scaffolded by goctl. Safe to edit.
  2. // goctl 1.10.1
  3. package pub
  4. import (
  5. "context"
  6. "time"
  7. "perms-system-server/internal/middleware"
  8. "perms-system-server/internal/response"
  9. "perms-system-server/internal/svc"
  10. "perms-system-server/internal/types"
  11. "github.com/zeromicro/go-zero/core/logx"
  12. )
  13. type AdminLoginByCapLogic struct {
  14. logx.Logger
  15. ctx context.Context
  16. svcCtx *svc.ServiceContext
  17. }
  18. func NewAdminLoginByCapLogic(ctx context.Context, svcCtx *svc.ServiceContext) *AdminLoginByCapLogic {
  19. return &AdminLoginByCapLogic{
  20. Logger: logx.WithContext(ctx),
  21. ctx: ctx,
  22. svcCtx: svcCtx,
  23. }
  24. }
  25. func (l *AdminLoginByCapLogic) AdminLoginByCap(req *types.AdminLoginByCapReq) (*types.LoginResp, error) {
  26. if err := verifyCapToken(l.ctx, l.svcCtx.Config.Capjs, req.CapToken, l.Logger); err != nil {
  27. return nil, err
  28. }
  29. clientIP := middleware.GetClientIP(l.ctx)
  30. result, err := ValidateAdminLogin(l.ctx, l.svcCtx, req.Username, req.Password, req.ManagementKey, clientIP)
  31. if err != nil {
  32. if le, ok := err.(*LoginError); ok {
  33. switch le.Code {
  34. case 401:
  35. return nil, response.ErrUnauthorized(le.Message)
  36. case 429:
  37. return nil, response.NewCodeError(429, le.Message)
  38. case 503:
  39. return nil, response.NewCodeError(503, le.Message)
  40. }
  41. }
  42. return nil, err
  43. }
  44. ud := result.UserDetails
  45. return &types.LoginResp{
  46. AccessToken: result.AccessToken,
  47. RefreshToken: result.RefreshToken,
  48. Expires: time.Now().Unix() + l.svcCtx.Config.Auth.AccessExpire,
  49. UserInfo: types.UserInfo{
  50. UserId: ud.UserId,
  51. Username: ud.Username,
  52. Nickname: ud.Nickname,
  53. Avatar: ud.Avatar,
  54. Email: ud.Email,
  55. Phone: ud.Phone,
  56. IsSuperAdmin: ud.IsSuperAdminRaw,
  57. MustChangePassword: ud.MustChangePwdRaw,
  58. MemberType: ud.MemberType,
  59. Perms: ud.Perms,
  60. },
  61. }, nil
  62. }