summary refs log tree commit diff
path: root/synapse/api/errors.py
diff options
context:
space:
mode:
authorAndrew Morgan <andrew@amorgan.xyz>2020-02-17 17:13:41 +0000
committerAndrew Morgan <andrew@amorgan.xyz>2020-02-17 17:13:41 +0000
commitb5844ad69918fe2525d240e2823da199c1b9197a (patch)
treed2dabbf7ab2d5e33fd6f150465488f02b7aae6af /synapse/api/errors.py
parentAdd basic opentracing support (#5544) (diff)
parentClean up exception handling for access_tokens (#5656) (diff)
downloadsynapse-b5844ad69918fe2525d240e2823da199c1b9197a.tar.xz
Clean up exception handling for access_tokens (#5656)
Diffstat (limited to 'synapse/api/errors.py')
-rw-r--r--synapse/api/errors.py33
1 files changed, 32 insertions, 1 deletions
diff --git a/synapse/api/errors.py b/synapse/api/errors.py

index 214a45636c..8f0b0c424e 100644 --- a/synapse/api/errors.py +++ b/synapse/api/errors.py
@@ -218,7 +218,9 @@ class NotFoundError(SynapseError): class AuthError(SynapseError): - """An error raised when there was a problem authorising an event.""" + """An error raised when there was a problem authorising an event, and at various + other poorly-defined times. + """ def __init__(self, *args, **kwargs): if "errcode" not in kwargs: @@ -226,6 +228,35 @@ class AuthError(SynapseError): super(AuthError, self).__init__(*args, **kwargs) +class InvalidClientCredentialsError(SynapseError): + """An error raised when there was a problem with the authorisation credentials + in a client request. + + https://matrix.org/docs/spec/client_server/r0.5.0#using-access-tokens: + + When credentials are required but missing or invalid, the HTTP call will + return with a status of 401 and the error code, M_MISSING_TOKEN or + M_UNKNOWN_TOKEN respectively. + """ + + def __init__(self, msg, errcode): + super().__init__(code=401, msg=msg, errcode=errcode) + + +class MissingClientTokenError(InvalidClientCredentialsError): + """Raised when we couldn't find the access token in a request""" + + def __init__(self, msg="Missing access token"): + super().__init__(msg=msg, errcode="M_MISSING_TOKEN") + + +class InvalidClientTokenError(InvalidClientCredentialsError): + """Raised when we didn't understand the access token in a request""" + + def __init__(self, msg="Unrecognised access token"): + super().__init__(msg=msg, errcode="M_UNKNOWN_TOKEN") + + class ResourceLimitError(SynapseError): """ Any error raised when there is a problem with resource usage.