diff options
author | Brendan Abolivier <babolivier@matrix.org> | 2019-06-10 11:57:02 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-10 11:57:02 +0100 |
commit | 26b62796c2a0809294b4bd6d1ff62aa9c76c631d (patch) | |
tree | bd6bba5ab46ed6f34bf68098e9d0680bd07f40dd /synapse/api/auth.py | |
parent | Liberapay is now officially recognised, update FUNDING.yml (#5386) (diff) | |
parent | Better wording (diff) | |
download | synapse-26b62796c2a0809294b4bd6d1ff62aa9c76c631d.tar.xz |
Merge pull request #5363 from matrix-org/babolivier/account_validity_send_mail_auth
Don't check whether the user's account is expired on /send_mail requests
Diffstat (limited to 'synapse/api/auth.py')
-rw-r--r-- | synapse/api/auth.py | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/synapse/api/auth.py b/synapse/api/auth.py index 0c6c93a87b..79e2808dc5 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: @@ -229,7 +240,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: |