diff --git a/server/channels/api4/user.go b/server/channels/api4/user.go index 5e7e15e4dc..f0429d8de8 100644 --- a/server/channels/api4/user.go +++ b/server/channels/api4/user.go @@ -1297,7 +1297,7 @@ func updateUser(c *Context, w http.ResponseWriter, r *http.Request) { // If eMail update is attempted by the currently logged in user, check if correct password was provided if user.Email != "" && ouser.Email != user.Email && c.AppContext.Session().UserId == c.Params.UserId { - err = c.App.DoubleCheckPassword(ouser, user.Password) + err = c.App.DoubleCheckPassword(c.AppContext, ouser, user.Password) if err != nil { c.SetInvalidParam("password") return @@ -1378,7 +1378,7 @@ func patchUser(c *Context, w http.ResponseWriter, r *http.Request) { return } - if err = c.App.DoubleCheckPassword(ouser, *patch.Password); err != nil { + if err = c.App.DoubleCheckPassword(c.AppContext, ouser, *patch.Password); err != nil { c.Err = err return } diff --git a/server/channels/api4/user_test.go b/server/channels/api4/user_test.go index 9ab83a0756..c5d6cc7589 100644 --- a/server/channels/api4/user_test.go +++ b/server/channels/api4/user_test.go @@ -2002,14 +2002,14 @@ func TestPatchUser(t *testing.T) { require.Equal(t, "America/New_York", ruser.Timezone["automaticTimezone"], "automaticTimezone should update properly") require.Empty(t, ruser.Timezone["manualTimezone"], "manualTimezone should update properly") - appErr := th.App.CheckPasswordAndAllCriteria(ruser, *patch.Password, "") + appErr := th.App.CheckPasswordAndAllCriteria(th.Context, user, *patch.Password, "") require.NotNil(t, appErr, "Password should not match") currentPassword := user.Password user, appErr = th.App.GetUser(ruser.Id) require.Nil(t, appErr) - appErr = th.App.CheckPasswordAndAllCriteria(user, currentPassword, "") + appErr = th.App.CheckPasswordAndAllCriteria(th.Context, user, currentPassword, "") require.Nil(t, appErr, "Password should still match") patch = &model.UserPatch{} diff --git a/server/channels/app/app_iface.go b/server/channels/app/app_iface.go index b5fcb75d16..b39c4d60d7 100644 --- a/server/channels/app/app_iface.go +++ b/server/channels/app/app_iface.go @@ -362,7 +362,7 @@ type AppIface interface { // Ensure the zip file name ends with a .zip CreateZipFileAndAddFiles(fileBackend filestore.FileBackend, fileDatas []model.FileData, zipFileName, directory string) error // This to be used for places we check the users password when they are already logged in - DoubleCheckPassword(user *model.User, password string) *model.AppError + DoubleCheckPassword(rctx request.CTX, user *model.User, password string) *model.AppError // UpdateBotActive marks a bot as active or inactive, along with its corresponding user. UpdateBotActive(c request.CTX, botUserId string, active bool) (*model.Bot, *model.AppError) // UpdateBotOwner changes a bot's owner to the given value. @@ -450,13 +450,13 @@ type AppIface interface { CheckForClientSideCert(r *http.Request) (string, string, string) CheckIntegrity() <-chan model.IntegrityCheckResult CheckMandatoryS3Fields(settings *model.FileSettings) *model.AppError - CheckPasswordAndAllCriteria(user *model.User, password string, mfaToken string) *model.AppError + CheckPasswordAndAllCriteria(rctx request.CTX, user *model.User, password string, mfaToken string) *model.AppError CheckPostReminders() CheckRolesExist(roleNames []string) *model.AppError - CheckUserAllAuthenticationCriteria(user *model.User, mfaToken string) *model.AppError - CheckUserMfa(user *model.User, token string) *model.AppError - CheckUserPostflightAuthenticationCriteria(user *model.User) *model.AppError - CheckUserPreflightAuthenticationCriteria(user *model.User, mfaToken string) *model.AppError + CheckUserAllAuthenticationCriteria(rctx request.CTX, user *model.User, mfaToken string) *model.AppError + CheckUserMfa(rctx request.CTX, user *model.User, token string) *model.AppError + CheckUserPostflightAuthenticationCriteria(rctx request.CTX, user *model.User) *model.AppError + CheckUserPreflightAuthenticationCriteria(rctx request.CTX, user *model.User, mfaToken string) *model.AppError CheckWebConn(userID, connectionID string) *platform.CheckConnResult ClearChannelMembersCache(c request.CTX, channelID string) error ClearLatestVersionCache() @@ -885,7 +885,7 @@ type AppIface interface { IsConfigReadOnly() bool IsFirstUserAccount() bool IsLeader() bool - IsPasswordValid(password string) *model.AppError + IsPasswordValid(rctx request.CTX, password string) *model.AppError IsPersistentNotificationsEnabled() bool IsPhase2MigrationCompleted() *model.AppError IsPluginActive(pluginName string) (bool, error) @@ -1126,7 +1126,7 @@ type AppIface interface { UpdateOAuthApp(oldApp, updatedApp *model.OAuthApp) (*model.OAuthApp, *model.AppError) UpdateOAuthUserAttrs(c request.CTX, userData io.Reader, user *model.User, provider einterfaces.OAuthProvider, service string, tokenUser *model.User) *model.AppError UpdateOutgoingWebhook(c request.CTX, oldHook, updatedHook *model.OutgoingWebhook) (*model.OutgoingWebhook, *model.AppError) - UpdatePassword(user *model.User, newPassword string) *model.AppError + UpdatePassword(rctx request.CTX, user *model.User, newPassword string) *model.AppError UpdatePasswordAsUser(c request.CTX, userID, currentPassword, newPassword string) *model.AppError UpdatePasswordByUserIdSendEmail(c request.CTX, userID, newPassword, method string) *model.AppError UpdatePasswordSendEmail(c request.CTX, user *model.User, newPassword, method string) *model.AppError diff --git a/server/channels/app/authentication.go b/server/channels/app/authentication.go index 55a73607e0..5c544c24d1 100644 --- a/server/channels/app/authentication.go +++ b/server/channels/app/authentication.go @@ -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 } diff --git a/server/channels/app/import_functions.go b/server/channels/app/import_functions.go index 19f66f8c48..a137d2d7aa 100644 --- a/server/channels/app/import_functions.go +++ b/server/channels/app/import_functions.go @@ -591,7 +591,7 @@ func (a *App) importUser(rctx request.CTX, data *imports.UserImportData, dryRun } } if password != "" { - if appErr = a.UpdatePassword(user, password); appErr != nil { + if appErr = a.UpdatePassword(c, user, password); appErr != nil { return appErr } } else { diff --git a/server/channels/app/ldap.go b/server/channels/app/ldap.go index ed197053f0..515556597b 100644 --- a/server/channels/app/ldap.go +++ b/server/channels/app/ldap.go @@ -98,7 +98,7 @@ func (a *App) SwitchEmailToLdap(c request.CTX, email, password, code, ldapLoginI return "", err } - if err := a.CheckPasswordAndAllCriteria(user, password, code); err != nil { + if err := a.CheckPasswordAndAllCriteria(c, user, password, code); err != nil { return "", err } @@ -147,11 +147,11 @@ func (a *App) SwitchLdapToEmail(c request.CTX, ldapPassword, code, email, newPas return "", err } - if err := a.CheckUserMfa(user, code); err != nil { + if err := a.CheckUserMfa(c, user, code); err != nil { return "", err } - if err := a.UpdatePassword(user, newPassword); err != nil { + if err := a.UpdatePassword(c, user, newPassword); err != nil { return "", err } diff --git a/server/channels/app/oauth.go b/server/channels/app/oauth.go index ba09257445..18903f987f 100644 --- a/server/channels/app/oauth.go +++ b/server/channels/app/oauth.go @@ -949,7 +949,7 @@ func (a *App) SwitchEmailToOAuth(c request.CTX, w http.ResponseWriter, r *http.R return "", err } - if err = a.CheckPasswordAndAllCriteria(user, password, code); err != nil { + if err = a.CheckPasswordAndAllCriteria(c, user, password, code); err != nil { return "", err } @@ -983,7 +983,7 @@ func (a *App) SwitchOAuthToEmail(c request.CTX, email, password, requesterId str return "", model.NewAppError("SwitchOAuthToEmail", "api.user.oauth_to_email.context.app_error", nil, "", http.StatusForbidden) } - if err := a.UpdatePassword(user, password); err != nil { + if err := a.UpdatePassword(c, user, password); err != nil { return "", err } diff --git a/server/channels/app/opentracing/opentracing_layer.go b/server/channels/app/opentracing/opentracing_layer.go index c78cb5fd95..4e7d7d0a21 100644 --- a/server/channels/app/opentracing/opentracing_layer.go +++ b/server/channels/app/opentracing/opentracing_layer.go @@ -1257,7 +1257,7 @@ func (a *OpenTracingAppLayer) CheckMandatoryS3Fields(settings *model.FileSetting return resultVar0 } -func (a *OpenTracingAppLayer) CheckPasswordAndAllCriteria(user *model.User, password string, mfaToken string) *model.AppError { +func (a *OpenTracingAppLayer) CheckPasswordAndAllCriteria(rctx request.CTX, user *model.User, password string, mfaToken string) *model.AppError { origCtx := a.ctx span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.CheckPasswordAndAllCriteria") @@ -1269,7 +1269,7 @@ func (a *OpenTracingAppLayer) CheckPasswordAndAllCriteria(user *model.User, pass }() defer span.Finish() - resultVar0 := a.app.CheckPasswordAndAllCriteria(user, password, mfaToken) + resultVar0 := a.app.CheckPasswordAndAllCriteria(rctx, user, password, mfaToken) if resultVar0 != nil { span.LogFields(spanlog.Error(resultVar0)) @@ -1333,7 +1333,7 @@ func (a *OpenTracingAppLayer) CheckRolesExist(roleNames []string) *model.AppErro return resultVar0 } -func (a *OpenTracingAppLayer) CheckUserAllAuthenticationCriteria(user *model.User, mfaToken string) *model.AppError { +func (a *OpenTracingAppLayer) CheckUserAllAuthenticationCriteria(rctx request.CTX, user *model.User, mfaToken string) *model.AppError { origCtx := a.ctx span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.CheckUserAllAuthenticationCriteria") @@ -1345,7 +1345,7 @@ func (a *OpenTracingAppLayer) CheckUserAllAuthenticationCriteria(user *model.Use }() defer span.Finish() - resultVar0 := a.app.CheckUserAllAuthenticationCriteria(user, mfaToken) + resultVar0 := a.app.CheckUserAllAuthenticationCriteria(rctx, user, mfaToken) if resultVar0 != nil { span.LogFields(spanlog.Error(resultVar0)) @@ -1355,7 +1355,7 @@ func (a *OpenTracingAppLayer) CheckUserAllAuthenticationCriteria(user *model.Use return resultVar0 } -func (a *OpenTracingAppLayer) CheckUserMfa(user *model.User, token string) *model.AppError { +func (a *OpenTracingAppLayer) CheckUserMfa(rctx request.CTX, user *model.User, token string) *model.AppError { origCtx := a.ctx span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.CheckUserMfa") @@ -1367,7 +1367,7 @@ func (a *OpenTracingAppLayer) CheckUserMfa(user *model.User, token string) *mode }() defer span.Finish() - resultVar0 := a.app.CheckUserMfa(user, token) + resultVar0 := a.app.CheckUserMfa(rctx, user, token) if resultVar0 != nil { span.LogFields(spanlog.Error(resultVar0)) @@ -1377,7 +1377,7 @@ func (a *OpenTracingAppLayer) CheckUserMfa(user *model.User, token string) *mode return resultVar0 } -func (a *OpenTracingAppLayer) CheckUserPostflightAuthenticationCriteria(user *model.User) *model.AppError { +func (a *OpenTracingAppLayer) CheckUserPostflightAuthenticationCriteria(rctx request.CTX, user *model.User) *model.AppError { origCtx := a.ctx span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.CheckUserPostflightAuthenticationCriteria") @@ -1389,7 +1389,7 @@ func (a *OpenTracingAppLayer) CheckUserPostflightAuthenticationCriteria(user *mo }() defer span.Finish() - resultVar0 := a.app.CheckUserPostflightAuthenticationCriteria(user) + resultVar0 := a.app.CheckUserPostflightAuthenticationCriteria(rctx, user) if resultVar0 != nil { span.LogFields(spanlog.Error(resultVar0)) @@ -1399,7 +1399,7 @@ func (a *OpenTracingAppLayer) CheckUserPostflightAuthenticationCriteria(user *mo return resultVar0 } -func (a *OpenTracingAppLayer) CheckUserPreflightAuthenticationCriteria(user *model.User, mfaToken string) *model.AppError { +func (a *OpenTracingAppLayer) CheckUserPreflightAuthenticationCriteria(rctx request.CTX, user *model.User, mfaToken string) *model.AppError { origCtx := a.ctx span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.CheckUserPreflightAuthenticationCriteria") @@ -1411,7 +1411,7 @@ func (a *OpenTracingAppLayer) CheckUserPreflightAuthenticationCriteria(user *mod }() defer span.Finish() - resultVar0 := a.app.CheckUserPreflightAuthenticationCriteria(user, mfaToken) + resultVar0 := a.app.CheckUserPreflightAuthenticationCriteria(rctx, user, mfaToken) if resultVar0 != nil { span.LogFields(spanlog.Error(resultVar0)) @@ -3975,7 +3975,7 @@ func (a *OpenTracingAppLayer) DoUploadFileExpectModification(c request.CTX, now return resultVar0, resultVar1, resultVar2 } -func (a *OpenTracingAppLayer) DoubleCheckPassword(user *model.User, password string) *model.AppError { +func (a *OpenTracingAppLayer) DoubleCheckPassword(rctx request.CTX, user *model.User, password string) *model.AppError { origCtx := a.ctx span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.DoubleCheckPassword") @@ -3987,7 +3987,7 @@ func (a *OpenTracingAppLayer) DoubleCheckPassword(user *model.User, password str }() defer span.Finish() - resultVar0 := a.app.DoubleCheckPassword(user, password) + resultVar0 := a.app.DoubleCheckPassword(rctx, user, password) if resultVar0 != nil { span.LogFields(spanlog.Error(resultVar0)) @@ -11890,7 +11890,7 @@ func (a *OpenTracingAppLayer) IsLeader() bool { return resultVar0 } -func (a *OpenTracingAppLayer) IsPasswordValid(password string) *model.AppError { +func (a *OpenTracingAppLayer) IsPasswordValid(rctx request.CTX, password string) *model.AppError { origCtx := a.ctx span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.IsPasswordValid") @@ -11902,7 +11902,7 @@ func (a *OpenTracingAppLayer) IsPasswordValid(password string) *model.AppError { }() defer span.Finish() - resultVar0 := a.app.IsPasswordValid(password) + resultVar0 := a.app.IsPasswordValid(rctx, password) if resultVar0 != nil { span.LogFields(spanlog.Error(resultVar0)) @@ -17541,7 +17541,7 @@ func (a *OpenTracingAppLayer) UpdateOutgoingWebhook(c request.CTX, oldHook *mode return resultVar0, resultVar1 } -func (a *OpenTracingAppLayer) UpdatePassword(user *model.User, newPassword string) *model.AppError { +func (a *OpenTracingAppLayer) UpdatePassword(rctx request.CTX, user *model.User, newPassword string) *model.AppError { origCtx := a.ctx span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.UpdatePassword") @@ -17553,7 +17553,7 @@ func (a *OpenTracingAppLayer) UpdatePassword(user *model.User, newPassword strin }() defer span.Finish() - resultVar0 := a.app.UpdatePassword(user, newPassword) + resultVar0 := a.app.UpdatePassword(rctx, user, newPassword) if resultVar0 != nil { span.LogFields(spanlog.Error(resultVar0)) diff --git a/server/channels/app/plugin_hooks_test.go b/server/channels/app/plugin_hooks_test.go index 0ba8fc5c37..64c2cb56d8 100644 --- a/server/channels/app/plugin_hooks_test.go +++ b/server/channels/app/plugin_hooks_test.go @@ -699,7 +699,7 @@ func TestUserWillLogIn_Blocked(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - err := th.App.UpdatePassword(th.BasicUser, "hunter2") + err := th.App.UpdatePassword(th.Context, th.BasicUser, "hunter2") assert.Nil(t, err, "Error updating user password: %s", err) tearDown, _, _ := SetAppEnvironmentWithPlugins(t, []string{ @@ -737,7 +737,7 @@ func TestUserWillLogInIn_Passed(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - err := th.App.UpdatePassword(th.BasicUser, "hunter2") + err := th.App.UpdatePassword(th.Context, th.BasicUser, "hunter2") assert.Nil(t, err, "Error updating user password: %s", err) @@ -778,7 +778,7 @@ func TestUserHasLoggedIn(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - err := th.App.UpdatePassword(th.BasicUser, "hunter2") + err := th.App.UpdatePassword(th.Context, th.BasicUser, "hunter2") assert.Nil(t, err, "Error updating user password: %s", err) diff --git a/server/channels/app/user.go b/server/channels/app/user.go index 57b86e04ab..1aaa4db909 100644 --- a/server/channels/app/user.go +++ b/server/channels/app/user.go @@ -905,7 +905,7 @@ func (a *App) UpdatePasswordAsUser(c request.CTX, userID, currentPassword, newPa return model.NewAppError("updatePassword", "api.user.update_password.oauth.app_error", nil, "auth_service="+user.AuthService, http.StatusBadRequest) } - if err := a.DoubleCheckPassword(user, currentPassword); err != nil { + if err := a.DoubleCheckPassword(c, user, currentPassword); err != nil { if err.Id == "api.user.check_user_password.invalid.app_error" { err = model.NewAppError("updatePassword", "api.user.update_password.incorrect.app_error", nil, "", http.StatusBadRequest) } @@ -1366,8 +1366,8 @@ func (a *App) UpdatePasswordByUserIdSendEmail(c request.CTX, userID, newPassword return a.UpdatePasswordSendEmail(c, user, newPassword, method) } -func (a *App) UpdatePassword(user *model.User, newPassword string) *model.AppError { - if err := a.IsPasswordValid(newPassword); err != nil { +func (a *App) UpdatePassword(rctx request.CTX, user *model.User, newPassword string) *model.AppError { + if err := a.IsPasswordValid(rctx, newPassword); err != nil { return err } @@ -1383,7 +1383,7 @@ func (a *App) UpdatePassword(user *model.User, newPassword string) *model.AppErr } func (a *App) UpdatePasswordSendEmail(c request.CTX, user *model.User, newPassword, method string) *model.AppError { - if err := a.UpdatePassword(user, newPassword); err != nil { + if err := a.UpdatePassword(c, user, newPassword); err != nil { return err } @@ -2474,7 +2474,7 @@ func (a *App) ConvertBotToUser(c request.CTX, bot *model.Bot, userPatch *model.U return nil, err } - err = a.UpdatePassword(user, *userPatch.Password) + err = a.UpdatePassword(c, user, *userPatch.Password) if err != nil { return nil, err } diff --git a/server/channels/web/saml.go b/server/channels/web/saml.go index e376db98f5..6a4eb58e73 100644 --- a/server/channels/web/saml.go +++ b/server/channels/web/saml.go @@ -145,7 +145,7 @@ func completeSaml(c *Context, w http.ResponseWriter, r *http.Request) { return } - if err = c.App.CheckUserAllAuthenticationCriteria(user, ""); err != nil { + if err = c.App.CheckUserAllAuthenticationCriteria(c.AppContext, user, ""); err != nil { handleError(err) return }