sso_service.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package backend
  2. import (
  3. "context"
  4. "kpt-tmr-group/model"
  5. "kpt-tmr-group/pkg/jwt"
  6. "kpt-tmr-group/pkg/xerr"
  7. operationPb "kpt-tmr-group/proto/go/backend/operation"
  8. )
  9. // Auth 用户登录
  10. func (s *StoreEntry) Auth(ctx context.Context, auth *operationPb.UserAuth) (*operationPb.SystemToken, error) {
  11. systemUser := &model.SystemUser{}
  12. if err := s.DB.Where("name = ?", auth.UserName).Find(systemUser).Error; err != nil {
  13. return nil, xerr.WithStack(err)
  14. }
  15. if systemUser.Password != auth.Password {
  16. return nil, xerr.Customf("密码错误,来自用户:%s", auth.UserName)
  17. }
  18. token, err := jwt.GenerateToken(systemUser.Name, systemUser.Password)
  19. if err != nil {
  20. return nil, xerr.WithStack(err)
  21. }
  22. if token == "" {
  23. return nil, xerr.Custom("获取token错误")
  24. }
  25. return &operationPb.SystemToken{
  26. Token: token,
  27. }, nil
  28. }
  29. // GetUserInfo 获取用户信息
  30. func (s *StoreEntry) GetUserInfo(ctx context.Context, token string) (*operationPb.UserAuth, error) {
  31. systemUser := &model.SystemUser{}
  32. claims, err := jwt.ParseToken(token)
  33. if err != nil {
  34. return nil, xerr.WithStack(err)
  35. }
  36. if claims.Username == "" {
  37. return nil, xerr.Custom("token解析失败")
  38. }
  39. if err = s.DB.Where("name = ?", claims.Username).Find(systemUser).Error; err != nil {
  40. return nil, xerr.WithStack(err)
  41. }
  42. return systemUser.SystemUserFormat(), nil
  43. }