初始化2
This commit is contained in:
@@ -25,8 +25,7 @@ func NewAuthService() *AuthService {
|
||||
}
|
||||
}
|
||||
|
||||
// Login 用户登录
|
||||
// 验证用户名密码, 生成JWT Token
|
||||
// Login 用户登录(用户名+密码)
|
||||
func (s *AuthService) Login(req *dto.LoginRequest) (*dto.LoginResponse, error) {
|
||||
// 查找用户
|
||||
user, err := s.userRepo.FindByUsername(req.Username)
|
||||
@@ -68,6 +67,64 @@ func (s *AuthService) Login(req *dto.LoginRequest) (*dto.LoginResponse, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
// validateAppLogin 校验 appId 登录
|
||||
func (s *AuthService) validateAppLogin(appID string, userID uint64) error {
|
||||
// 1. appId 是否存在且启用
|
||||
var app model.App
|
||||
if err := config.DB.Where("app_id = ? AND status = 1", appID).First(&app).Error; err != nil {
|
||||
return errors.New("应用ID无效或已禁用")
|
||||
}
|
||||
// 2. 用户是否已绑定该应用
|
||||
var count int64
|
||||
config.DB.Model(&model.AppUser{}).Where("app_id = ? AND user_id = ?", app.ID, userID).Count(&count)
|
||||
if count == 0 {
|
||||
return errors.New("用户未授权此应用")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// AppLogin 应用登录(用户名+appId)
|
||||
func (s *AuthService) AppLogin(req *dto.AppLoginRequest) (*dto.LoginResponse, error) {
|
||||
// 查找用户
|
||||
user, err := s.userRepo.FindByUsername(req.Username)
|
||||
if err != nil {
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return nil, errors.New("用户名或密码错误")
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// 检查用户状态
|
||||
if user.Status != 1 {
|
||||
return nil, errors.New("账号已被禁用")
|
||||
}
|
||||
|
||||
// 校验 appId
|
||||
if err := s.validateAppLogin(req.AppID, user.ID); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// 生成JWT Token
|
||||
token, err := utils.GenerateToken(
|
||||
user.ID,
|
||||
user.Username,
|
||||
user.Role,
|
||||
config.AppConfig.JWT.Secret,
|
||||
config.AppConfig.JWT.Expiration,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, errors.New("生成Token失败")
|
||||
}
|
||||
|
||||
return &dto.LoginResponse{
|
||||
Token: token,
|
||||
Username: user.Username,
|
||||
Nickname: user.Nickname,
|
||||
Role: user.Role,
|
||||
MustChangePwd: user.MustChangePwd == 1,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// Register 用户注册
|
||||
func (s *AuthService) Register(req *dto.RegisterRequest) error {
|
||||
existing, _ := s.userRepo.FindByUsername(req.Username)
|
||||
@@ -89,7 +146,17 @@ func (s *AuthService) Register(req *dto.RegisterRequest) error {
|
||||
Status: 1,
|
||||
}
|
||||
|
||||
return s.userRepo.Create(user)
|
||||
if err := s.userRepo.Create(user); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 分配默认角色(user), 使存储策略分配生效
|
||||
var role model.Role
|
||||
if config.DB.Where("name = ?", "user").First(&role).Error == nil {
|
||||
config.DB.Create(&model.UserRole{UserID: user.ID, RoleID: role.ID})
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// ChangePassword 修改密码
|
||||
|
||||
Reference in New Issue
Block a user