初始化2

This commit is contained in:
2026-07-10 17:33:33 +08:00
parent b51ee98afa
commit 94f6ecf901
59 changed files with 3893 additions and 980 deletions

View File

@@ -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 修改密码