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

1from .roles import ROLES # noqa: F401 

2from .errors import ValidationErrors # noqa: F401 

3 

4 

5class AuthorizationFailure(Exception): 

6 default_message = "You do not have permission to perform the requested action" 

7 

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 

19 

20 def __repr__(self): 

21 base = self.message 

22 if self.errors: 

23 base += "\n" + repr(self.errors) 

24 return base 

25 

26 def __str__(self): 

27 return self.__repr__() 

28 

29 

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) 

34 

35 

36class NotLoggedIn(AuthorizationFailure): 

37 def __init__(self, *args, **kwargs): 

38 super(NotLoggedIn, self).__init__(*args, **kwargs)