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