[MM-58560] Configurable session revocation during password resets (#27286)
* [MM-58560] Allow for configurable session revocation during password reset * Missing i18n additions * Update Settings Wording * Update Settings Wording #2 * Update default_config.ts for Session Termination --------- Co-authored-by: Mattermost Build <build@mattermost.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
cbd5d95bbb
Коммит
1bbc3b4e83
@@ -1453,6 +1453,31 @@ func (a *App) UpdatePassword(rctx request.CTX, user *model.User, newPassword str
|
||||
|
||||
a.InvalidateCacheForUser(user.Id)
|
||||
|
||||
if *a.Config().ServiceSettings.TerminateSessionsOnPasswordChange {
|
||||
// Get currently active sessions if request is user-initiated to retain it
|
||||
currentSession := ""
|
||||
if rctx.Session() != nil && rctx.Session().UserId == user.Id {
|
||||
currentSession = rctx.Session().Id
|
||||
}
|
||||
|
||||
sessions, err := a.GetSessions(rctx, user.Id)
|
||||
if err != nil {
|
||||
return model.NewAppError("UpdatePassword", "api.user.update_password.failed.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
|
||||
}
|
||||
|
||||
// Revoke all but current session
|
||||
for _, session := range sessions {
|
||||
if session.Id == currentSession {
|
||||
continue
|
||||
}
|
||||
|
||||
err := a.RevokeSessionById(rctx, session.Id)
|
||||
if err != nil {
|
||||
return model.NewAppError("UpdatePassword", "api.user.update_password.failed.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
Ссылка в новой задаче
Block a user