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
« 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
5from .compat import CallableFalse, CallableTrue
6from .settings import api_settings
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 """
19 # User is always active since Simple JWT will never issue a token for an
20 # inactive user
21 is_active = True
23 _groups = EmptyManager(auth_models.Group)
24 _user_permissions = EmptyManager(auth_models.Permission)
26 def __init__(self, token):
27 self.token = token
29 def __str__(self):
30 return f"TokenUser {self.id}"
32 @cached_property
33 def id(self):
34 return self.token[api_settings.USER_ID_CLAIM]
36 @cached_property
37 def pk(self):
38 return self.id
40 @cached_property
41 def username(self):
42 return self.token.get("username", "")
44 @cached_property
45 def is_staff(self):
46 return self.token.get("is_staff", False)
48 @cached_property
49 def is_superuser(self):
50 return self.token.get("is_superuser", False)
52 def __eq__(self, other):
53 return self.id == other.id
55 def __ne__(self, other):
56 return not self.__eq__(other)
58 def __hash__(self):
59 return hash(self.id)
61 def save(self):
62 raise NotImplementedError("Token users have no DB representation")
64 def delete(self):
65 raise NotImplementedError("Token users have no DB representation")
67 def set_password(self, raw_password):
68 raise NotImplementedError("Token users have no DB representation")
70 def check_password(self, raw_password):
71 raise NotImplementedError("Token users have no DB representation")
73 @property
74 def groups(self):
75 return self._groups
77 @property
78 def user_permissions(self):
79 return self._user_permissions
81 def get_group_permissions(self, obj=None):
82 return set()
84 def get_all_permissions(self, obj=None):
85 return set()
87 def has_perm(self, perm, obj=None):
88 return False
90 def has_perms(self, perm_list, obj=None):
91 return False
93 def has_module_perms(self, module):
94 return False
96 @property
97 def is_anonymous(self):
98 return CallableFalse
100 @property
101 def is_authenticated(self):
102 return CallableTrue
104 def get_username(self):
105 return self.username
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)