fix(auth): align lockout check ordering
This commit is contained in:
@@ -86,15 +86,12 @@ func (s *authService) Login(req request.LoginRequest, authCfg config.AuthConfig,
|
|||||||
return nil, errorsx.InvalidParam("用户名和密码不能为空")
|
return nil, errorsx.InvalidParam("用户名和密码不能为空")
|
||||||
}
|
}
|
||||||
|
|
||||||
user := UserService.GetByUsername(username)
|
|
||||||
if s.isCredentialLocked(username, authCfg) {
|
if s.isCredentialLocked(username, authCfg) {
|
||||||
userID := int64(0)
|
_ = s.createLoginCredentialLog(username, 0, false, clientIP, userAgent, "credential locked")
|
||||||
if user != nil {
|
|
||||||
userID = user.ID
|
|
||||||
}
|
|
||||||
_ = s.createLoginCredentialLog(username, userID, false, clientIP, userAgent, "credential locked")
|
|
||||||
return nil, errorsx.CredentialLocked("登录失败次数过多,请稍后再试")
|
return nil, errorsx.CredentialLocked("登录失败次数过多,请稍后再试")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
user := UserService.GetByUsername(username)
|
||||||
if user == nil || user.Status != enums.StatusOk {
|
if user == nil || user.Status != enums.StatusOk {
|
||||||
_ = s.createLoginCredentialLog(username, 0, false, clientIP, userAgent, "user not found")
|
_ = s.createLoginCredentialLog(username, 0, false, clientIP, userAgent, "user not found")
|
||||||
return nil, errorsx.InvalidAccount("用户名或密码错误")
|
return nil, errorsx.InvalidAccount("用户名或密码错误")
|
||||||
|
|||||||
@@ -324,6 +324,13 @@ func setupAuthServiceTestDB(t *testing.T) *gorm.DB {
|
|||||||
t.Fatalf("migrate auth tables: %v", err)
|
t.Fatalf("migrate auth tables: %v", err)
|
||||||
}
|
}
|
||||||
sqls.SetDB(db)
|
sqls.SetDB(db)
|
||||||
|
t.Cleanup(func() {
|
||||||
|
sqls.SetDB(nil)
|
||||||
|
sqlDB, err := db.DB()
|
||||||
|
if err == nil {
|
||||||
|
_ = sqlDB.Close()
|
||||||
|
}
|
||||||
|
})
|
||||||
return db
|
return db
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user