Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/rest_framework_simplejwt/models.py: 65%

66 statements  

« prev     ^ index     » next       coverage.py v6.4.4, created at 2023-07-17 14:22 -0600

1from django.contrib.auth import models as auth_models 

2from django.db.models.manager import EmptyManager 

3from django.utils.functional import cached_property 

4 

5from .compat import CallableFalse, CallableTrue 

6from .settings import api_settings 

7 

8 

9class TokenUser: 

10 """ 

11 A dummy user class modeled after django.contrib.auth.models.AnonymousUser. 

12 Used in conjunction with the `JWTStatelessUserAuthentication` backend to 

13 implement single sign-on functionality across services which share the same 

14 secret key. `JWTStatelessUserAuthentication` will return an instance of this 

15 class instead of a `User` model instance. Instances of this class act as 

16 stateless user objects which are backed by validated tokens. 

17 """ 

18 

19 # User is always active since Simple JWT will never issue a token for an 

20 # inactive user 

21 is_active = True 

22 

23 _groups = EmptyManager(auth_models.Group) 

24 _user_permissions = EmptyManager(auth_models.Permission) 

25 

26 def __init__(self, token): 

27 self.token = token 

28 

29 def __str__(self): 

30 return f"TokenUser {self.id}" 

31 

32 @cached_property 

33 def id(self): 

34 return self.token[api_settings.USER_ID_CLAIM] 

35 

36 @cached_property 

37 def pk(self): 

38 return self.id 

39 

40 @cached_property 

41 def username(self): 

42 return self.token.get("username", "") 

43 

44 @cached_property 

45 def is_staff(self): 

46 return self.token.get("is_staff", False) 

47 

48 @cached_property 

49 def is_superuser(self): 

50 return self.token.get("is_superuser", False) 

51 

52 def __eq__(self, other): 

53 return self.id == other.id 

54 

55 def __ne__(self, other): 

56 return not self.__eq__(other) 

57 

58 def __hash__(self): 

59 return hash(self.id) 

60 

61 def save(self): 

62 raise NotImplementedError("Token users have no DB representation") 

63 

64 def delete(self): 

65 raise NotImplementedError("Token users have no DB representation") 

66 

67 def set_password(self, raw_password): 

68 raise NotImplementedError("Token users have no DB representation") 

69 

70 def check_password(self, raw_password): 

71 raise NotImplementedError("Token users have no DB representation") 

72 

73 @property 

74 def groups(self): 

75 return self._groups 

76 

77 @property 

78 def user_permissions(self): 

79 return self._user_permissions 

80 

81 def get_group_permissions(self, obj=None): 

82 return set() 

83 

84 def get_all_permissions(self, obj=None): 

85 return set() 

86 

87 def has_perm(self, perm, obj=None): 

88 return False 

89 

90 def has_perms(self, perm_list, obj=None): 

91 return False 

92 

93 def has_module_perms(self, module): 

94 return False 

95 

96 @property 

97 def is_anonymous(self): 

98 return CallableFalse 

99 

100 @property 

101 def is_authenticated(self): 

102 return CallableTrue 

103 

104 def get_username(self): 

105 return self.username 

106 

107 def __getattr__(self, attr): 

108 """This acts as a backup attribute getter for custom claims defined in Token serializers.""" 

109 return self.token.get(attr, None)