Coverage for rfpy/auth/__init__.py: 100%
25 statements
« prev ^ index » next coverage.py v7.0.1, created at 2022-12-31 16:00 +0000
« prev ^ index » next coverage.py v7.0.1, created at 2022-12-31 16:00 +0000
1from .roles import ROLES # noqa: F401
2from .errors import ValidationErrors # noqa: F401
5class AuthorizationFailure(Exception):
7 default_message = 'You do not have permission to perform the requested action'
9 def __init__(self, *args, **kwargs):
10 errors = kwargs.get('errors', None)
11 self.message = AuthorizationFailure.default_message
12 if 'message' in kwargs:
13 self.message = kwargs['message']
14 elif len(args) and isinstance(args[0], str):
15 self.message = args[0]
16 elif errors is not None:
17 self.message = '%s validation rules failed' % len(errors)
18 super().__init__(*args)
19 self.errors = errors
21 def __repr__(self):
22 base = self.message
23 if self.errors:
24 base += '\n' + repr(self.errors)
25 return base
27 def __str__(self):
28 return self.__repr__()
31class LacksPermission(AuthorizationFailure):
33 def __init__(self, permission, user_id):
34 msg = 'User "%s" lacks required permission "%s".' % (user_id, permission)
35 super(LacksPermission, self).__init__(message=msg)
38class NotLoggedIn(AuthorizationFailure):
40 def __init__(self, *args, **kwargs):
41 super(NotLoggedIn, self).__init__(*args, **kwargs)
42 self.message = \
43 'You are not logged in'