userInfoLogic.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package auth
  2. import (
  3. "context"
  4. "perms-system-server/internal/middleware"
  5. "perms-system-server/internal/response"
  6. "perms-system-server/internal/svc"
  7. "perms-system-server/internal/types"
  8. "github.com/zeromicro/go-zero/core/logx"
  9. )
  10. type UserInfoLogic struct {
  11. logx.Logger
  12. ctx context.Context
  13. svcCtx *svc.ServiceContext
  14. }
  15. func NewUserInfoLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UserInfoLogic {
  16. return &UserInfoLogic{
  17. Logger: logx.WithContext(ctx),
  18. ctx: ctx,
  19. svcCtx: svcCtx,
  20. }
  21. }
  22. // UserInfo 获取当前登录用户信息。返回当前 JWT 令牌对应用户的完整个人信息、成员类型和权限列表,用于前端初始化用户状态。
  23. func (l *UserInfoLogic) UserInfo() (resp *types.UserInfo, err error) {
  24. ud := middleware.GetUserDetails(l.ctx)
  25. if ud == nil {
  26. return nil, response.ErrUnauthorized("未登录")
  27. }
  28. return &types.UserInfo{
  29. UserId: ud.UserId,
  30. Username: ud.Username,
  31. Nickname: ud.Nickname,
  32. Avatar: ud.Avatar,
  33. Email: ud.Email,
  34. Phone: ud.Phone,
  35. IsSuperAdmin: ud.IsSuperAdminRaw,
  36. MustChangePassword: ud.MustChangePwdRaw,
  37. MemberType: ud.MemberType,
  38. Perms: ud.Perms,
  39. }, nil
  40. }