[GH-21566] Add request context and logger to all public methods in server/channels/app/authentication.go (#25270)
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
dd46afacd6
Коммит
a6ba7163c8
@@ -44,7 +44,7 @@ func (tl TokenLocation) String() string {
|
||||
}
|
||||
}
|
||||
|
||||
func (a *App) IsPasswordValid(password string) *model.AppError {
|
||||
func (a *App) IsPasswordValid(rctx request.CTX, password string) *model.AppError {
|
||||
if err := users.IsPasswordValidWithSettings(password, &a.Config().PasswordSettings); err != nil {
|
||||
var invErr *users.ErrInvalidPassword
|
||||
switch {
|
||||
@@ -58,8 +58,8 @@ func (a *App) IsPasswordValid(password string) *model.AppError {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a *App) CheckPasswordAndAllCriteria(user *model.User, password string, mfaToken string) *model.AppError {
|
||||
if err := a.CheckUserPreflightAuthenticationCriteria(user, mfaToken); err != nil {
|
||||
func (a *App) CheckPasswordAndAllCriteria(rctx request.CTX, user *model.User, password string, mfaToken string) *model.AppError {
|
||||
if err := a.CheckUserPreflightAuthenticationCriteria(rctx, user, mfaToken); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -79,7 +79,7 @@ func (a *App) CheckPasswordAndAllCriteria(user *model.User, password string, mfa
|
||||
}
|
||||
}
|
||||
|
||||
if err := a.CheckUserMfa(user, mfaToken); err != nil {
|
||||
if err := a.CheckUserMfa(rctx, user, mfaToken); err != nil {
|
||||
// If the mfaToken is not set, we assume the client used this as a pre-flight request to query the server
|
||||
// about the MFA state of the user in question
|
||||
if mfaToken != "" {
|
||||
@@ -99,7 +99,7 @@ func (a *App) CheckPasswordAndAllCriteria(user *model.User, password string, mfa
|
||||
|
||||
a.InvalidateCacheForUser(user.Id)
|
||||
|
||||
if err := a.CheckUserPostflightAuthenticationCriteria(user); err != nil {
|
||||
if err := a.CheckUserPostflightAuthenticationCriteria(rctx, user); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -107,7 +107,7 @@ func (a *App) CheckPasswordAndAllCriteria(user *model.User, password string, mfa
|
||||
}
|
||||
|
||||
// This to be used for places we check the users password when they are already logged in
|
||||
func (a *App) DoubleCheckPassword(user *model.User, password string) *model.AppError {
|
||||
func (a *App) DoubleCheckPassword(rctx request.CTX, user *model.User, password string) *model.AppError {
|
||||
if err := checkUserLoginAttempts(user, *a.Config().ServiceSettings.MaximumLoginAttempts); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -137,19 +137,19 @@ func (a *App) DoubleCheckPassword(user *model.User, password string) *model.AppE
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a *App) checkLdapUserPasswordAndAllCriteria(c request.CTX, ldapId *string, password string, mfaToken string) (*model.User, *model.AppError) {
|
||||
func (a *App) checkLdapUserPasswordAndAllCriteria(rctx request.CTX, ldapId *string, password string, mfaToken string) (*model.User, *model.AppError) {
|
||||
if a.Ldap() == nil || ldapId == nil {
|
||||
err := model.NewAppError("doLdapAuthentication", "api.user.login_ldap.not_available.app_error", nil, "", http.StatusNotImplemented)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
ldapUser, err := a.Ldap().DoLogin(c, *ldapId, password)
|
||||
ldapUser, err := a.Ldap().DoLogin(rctx, *ldapId, password)
|
||||
if err != nil {
|
||||
err.StatusCode = http.StatusUnauthorized
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := a.CheckUserMfa(ldapUser, mfaToken); err != nil {
|
||||
if err := a.CheckUserMfa(rctx, ldapUser, mfaToken); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -161,19 +161,19 @@ func (a *App) checkLdapUserPasswordAndAllCriteria(c request.CTX, ldapId *string,
|
||||
return ldapUser, nil
|
||||
}
|
||||
|
||||
func (a *App) CheckUserAllAuthenticationCriteria(user *model.User, mfaToken string) *model.AppError {
|
||||
if err := a.CheckUserPreflightAuthenticationCriteria(user, mfaToken); err != nil {
|
||||
func (a *App) CheckUserAllAuthenticationCriteria(rctx request.CTX, user *model.User, mfaToken string) *model.AppError {
|
||||
if err := a.CheckUserPreflightAuthenticationCriteria(rctx, user, mfaToken); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := a.CheckUserPostflightAuthenticationCriteria(user); err != nil {
|
||||
if err := a.CheckUserPostflightAuthenticationCriteria(rctx, user); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a *App) CheckUserPreflightAuthenticationCriteria(user *model.User, mfaToken string) *model.AppError {
|
||||
func (a *App) CheckUserPreflightAuthenticationCriteria(rctx request.CTX, user *model.User, mfaToken string) *model.AppError {
|
||||
if err := checkUserNotDisabled(user); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -189,7 +189,7 @@ func (a *App) CheckUserPreflightAuthenticationCriteria(user *model.User, mfaToke
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a *App) CheckUserPostflightAuthenticationCriteria(user *model.User) *model.AppError {
|
||||
func (a *App) CheckUserPostflightAuthenticationCriteria(rctx request.CTX, user *model.User) *model.AppError {
|
||||
if !user.EmailVerified && *a.Config().EmailSettings.RequireEmailVerification {
|
||||
return model.NewAppError("Login", "api.user.login.not_verified.app_error", nil, "user_id="+user.Id, http.StatusUnauthorized)
|
||||
}
|
||||
@@ -197,7 +197,7 @@ func (a *App) CheckUserPostflightAuthenticationCriteria(user *model.User) *model
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a *App) CheckUserMfa(user *model.User, token string) *model.AppError {
|
||||
func (a *App) CheckUserMfa(rctx request.CTX, user *model.User, token string) *model.AppError {
|
||||
if !user.MfaActive || !*a.Config().ServiceSettings.EnableMultifactorAuthentication {
|
||||
return nil
|
||||
}
|
||||
@@ -240,7 +240,7 @@ func checkUserNotBot(user *model.User) *model.AppError {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a *App) authenticateUser(c request.CTX, user *model.User, password, mfaToken string) (*model.User, *model.AppError) {
|
||||
func (a *App) authenticateUser(rctx request.CTX, user *model.User, password, mfaToken string) (*model.User, *model.AppError) {
|
||||
license := a.Srv().License()
|
||||
ldapAvailable := *a.Config().LdapSettings.Enable && a.Ldap() != nil && license != nil && *license.Features.LDAP
|
||||
|
||||
@@ -250,7 +250,7 @@ func (a *App) authenticateUser(c request.CTX, user *model.User, password, mfaTok
|
||||
return user, err
|
||||
}
|
||||
|
||||
ldapUser, err := a.checkLdapUserPasswordAndAllCriteria(c, user.AuthData, password, mfaToken)
|
||||
ldapUser, err := a.checkLdapUserPasswordAndAllCriteria(rctx, user.AuthData, password, mfaToken)
|
||||
if err != nil {
|
||||
err.StatusCode = http.StatusUnauthorized
|
||||
return user, err
|
||||
@@ -269,7 +269,7 @@ func (a *App) authenticateUser(c request.CTX, user *model.User, password, mfaTok
|
||||
return user, err
|
||||
}
|
||||
|
||||
if err := a.CheckPasswordAndAllCriteria(user, password, mfaToken); err != nil {
|
||||
if err := a.CheckPasswordAndAllCriteria(rctx, user, password, mfaToken); err != nil {
|
||||
err.StatusCode = http.StatusUnauthorized
|
||||
return user, err
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user