fix(auth): harden oauth callback adoption flows
This commit is contained in:
@@ -78,9 +78,24 @@ type AuthResponse struct {
|
||||
User *dto.User `json:"user"`
|
||||
}
|
||||
|
||||
func ensureLoginUserActive(user *service.User) error {
|
||||
if user == nil {
|
||||
return infraerrors.Unauthorized("INVALID_USER", "user not found")
|
||||
}
|
||||
if !user.IsActive() {
|
||||
return service.ErrUserNotActive
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// respondWithTokenPair 生成 Token 对并返回认证响应
|
||||
// 如果 Token 对生成失败,回退到只返回 Access Token(向后兼容)
|
||||
func (h *AuthHandler) respondWithTokenPair(c *gin.Context, user *service.User) {
|
||||
if err := ensureLoginUserActive(user); err != nil {
|
||||
response.ErrorFrom(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
tokenPair, err := h.authService.GenerateTokenPair(c.Request.Context(), user, "")
|
||||
if err != nil {
|
||||
slog.Error("failed to generate token pair", "error", err, "user_id", user.ID)
|
||||
@@ -293,6 +308,10 @@ func (h *AuthHandler) Login2FA(c *gin.Context) {
|
||||
response.ErrorFrom(c, err)
|
||||
return
|
||||
}
|
||||
if err := ensureLoginUserActive(user); err != nil {
|
||||
response.ErrorFrom(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
if err := h.ensureBackendModeAllowsUser(c.Request.Context(), user); err != nil {
|
||||
response.ErrorFrom(c, err)
|
||||
|
||||
Reference in New Issue
Block a user