summary refs log tree commit diff
path: root/synapse
diff options
context:
space:
mode:
authorBrendan Abolivier <babolivier@matrix.org>2019-06-10 11:59:20 +0100
committerBrendan Abolivier <babolivier@matrix.org>2019-06-10 11:59:20 +0100
commit8d16321edcddd401342f91fb7907eea6f5d29a39 (patch)
tree8899b6d0040ab4c2aba723a0b4fafaf913a5fd4b /synapse
parentMerge branch 'babolivier/email_config' into dinsic (diff)
parentBetter wording (diff)
downloadsynapse-8d16321edcddd401342f91fb7907eea6f5d29a39.tar.xz
Merge branch 'babolivier/account_validity_send_mail_auth' into dinsic dinsic_2019-06-10
Diffstat (limited to 'synapse')
-rw-r--r--synapse/api/auth.py15
-rw-r--r--synapse/rest/client/v2_alpha/account_validity.py2
2 files changed, 14 insertions, 3 deletions
diff --git a/synapse/api/auth.py b/synapse/api/auth.py

index 1c5801fa51..f505f1ac63 100644 --- a/synapse/api/auth.py +++ b/synapse/api/auth.py
@@ -184,11 +184,22 @@ class Auth(object): return event_auth.get_public_keys(invite_event) @defer.inlineCallbacks - def get_user_by_req(self, request, allow_guest=False, rights="access"): + def get_user_by_req( + self, + request, + allow_guest=False, + rights="access", + allow_expired=False, + ): """ Get a registered user's ID. Args: request - An HTTP request with an access_token query parameter. + allow_expired - Whether to allow the request through even if the account is + expired. If true, Synapse will still require an access token to be + provided but won't check if the account it belongs to has expired. This + works thanks to /login delivering access tokens regardless of accounts' + expiration. Returns: defer.Deferred: resolves to a ``synapse.types.Requester`` object Raises: @@ -230,7 +241,7 @@ class Auth(object): is_guest = user_info["is_guest"] # Deny the request if the user account has expired. - if self._account_validity.enabled: + if self._account_validity.enabled and not allow_expired: user_id = user.to_string() expiration_ts = yield self.store.get_expiration_ts_for_user(user_id) if expiration_ts is not None and self.clock.time_msec() >= expiration_ts: diff --git a/synapse/rest/client/v2_alpha/account_validity.py b/synapse/rest/client/v2_alpha/account_validity.py
index fc8dbeb617..9bc1e208ca 100644 --- a/synapse/rest/client/v2_alpha/account_validity.py +++ b/synapse/rest/client/v2_alpha/account_validity.py
@@ -79,7 +79,7 @@ class AccountValiditySendMailServlet(RestServlet): if not self.account_validity.renew_by_email_enabled: raise AuthError(403, "Account renewal via email is disabled on this server.") - requester = yield self.auth.get_user_by_req(request) + requester = yield self.auth.get_user_by_req(request, allow_expired=True) user_id = requester.user.to_string() yield self.account_activity_handler.send_renewal_email_to_user(user_id)