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

1from .roles import ROLES # noqa: F401 

2from .errors import ValidationErrors # noqa: F401 

3 

4 

5class AuthorizationFailure(Exception): 

6 

7 default_message = 'You do not have permission to perform the requested action' 

8 

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 

20 

21 def __repr__(self): 

22 base = self.message 

23 if self.errors: 

24 base += '\n' + repr(self.errors) 

25 return base 

26 

27 def __str__(self): 

28 return self.__repr__() 

29 

30 

31class LacksPermission(AuthorizationFailure): 

32 

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) 

36 

37 

38class NotLoggedIn(AuthorizationFailure): 

39 

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

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

42 self.message = \ 

43 'You are not logged in'