1
0
mirror of https://github.com/matrix-org/matrix-authentication-service.git synced 2025-08-07 17:03:01 +03:00

Prevent password changes if disabled

This commit is contained in:
Quentin Gliech
2024-03-29 14:40:57 +01:00
parent d342b2cd5b
commit db0f007afd

View File

@@ -23,7 +23,7 @@ use mas_axum_utils::{
csrf::{CsrfExt, ProtectedForm}, csrf::{CsrfExt, ProtectedForm},
FancyError, SessionInfoExt, FancyError, SessionInfoExt,
}; };
use mas_data_model::BrowserSession; use mas_data_model::{BrowserSession, SiteConfig};
use mas_i18n::DataLocale; use mas_i18n::DataLocale;
use mas_policy::Policy; use mas_policy::Policy;
use mas_router::UrlBuilder; use mas_router::UrlBuilder;
@@ -51,14 +51,14 @@ pub(crate) async fn get(
clock: BoxClock, clock: BoxClock,
PreferredLanguage(locale): PreferredLanguage, PreferredLanguage(locale): PreferredLanguage,
State(templates): State<Templates>, State(templates): State<Templates>,
State(password_manager): State<PasswordManager>, State(site_config): State<SiteConfig>,
activity_tracker: BoundActivityTracker, activity_tracker: BoundActivityTracker,
State(url_builder): State<UrlBuilder>, State(url_builder): State<UrlBuilder>,
mut repo: BoxRepository, mut repo: BoxRepository,
cookie_jar: CookieJar, cookie_jar: CookieJar,
) -> Result<Response, FancyError> { ) -> Result<Response, FancyError> {
// If the password manager is disabled, we can go back to the account page. // If the password manager is disabled, we can go back to the account page.
if !password_manager.is_enabled() { if !site_config.password_change_allowed {
return Ok(url_builder return Ok(url_builder
.redirect(&mas_router::Account::default()) .redirect(&mas_router::Account::default())
.into_response()); .into_response());
@@ -106,6 +106,7 @@ pub(crate) async fn post(
clock: BoxClock, clock: BoxClock,
PreferredLanguage(locale): PreferredLanguage, PreferredLanguage(locale): PreferredLanguage,
State(password_manager): State<PasswordManager>, State(password_manager): State<PasswordManager>,
State(site_config): State<SiteConfig>,
State(templates): State<Templates>, State(templates): State<Templates>,
activity_tracker: BoundActivityTracker, activity_tracker: BoundActivityTracker,
State(url_builder): State<UrlBuilder>, State(url_builder): State<UrlBuilder>,
@@ -114,7 +115,7 @@ pub(crate) async fn post(
cookie_jar: CookieJar, cookie_jar: CookieJar,
Form(form): Form<ProtectedForm<ChangeForm>>, Form(form): Form<ProtectedForm<ChangeForm>>,
) -> Result<Response, FancyError> { ) -> Result<Response, FancyError> {
if !password_manager.is_enabled() { if !site_config.password_change_allowed {
// XXX: do something better here // XXX: do something better here
return Ok(StatusCode::METHOD_NOT_ALLOWED.into_response()); return Ok(StatusCode::METHOD_NOT_ALLOWED.into_response());
} }