Coverage for gws-app/gws/base/auth/system_provider.py: 89%
36 statements
« prev ^ index » next coverage.py v7.16.2, created at 2026-10-05 13:35 +0200
« prev ^ index » next coverage.py v7.16.2, created at 2026-10-05 13:35 +0200
1"""Built-in provider of the guest and system users."""
3import gws
5from . import user as user_module
8class Object(gws.AuthProvider):
9 """System authentication provider.
11 Provides the ``guest`` user (roles ``guest`` and ``all``) and the ``system``
12 user, which is allowed everything. Neither of them can log in.
13 """
15 users: dict
16 """The guest and system users, keyed by ``guest`` and ``system``."""
17 type = 'system'
18 """Provider type."""
20 def configure(self):
21 self.uid = 'gws.base.auth.provider.system'
22 self.allowedMethods = []
24 g = user_module.GuestUser(self, roles=[gws.c.ROLE_GUEST, gws.c.ROLE_ALL])
25 g.attributes = {}
26 g.displayName = ''
27 g.localUid = 'guest'
28 g.loginName = ''
29 g.uid = gws.u.join_uid(self.uid, g.localUid)
31 s = user_module.SystemUser(self, roles=[])
32 s.attributes = {}
33 s.displayName = ''
34 s.localUid = 'system'
35 s.loginName = ''
36 s.uid = gws.u.join_uid(self.uid, s.localUid)
38 self.users = {'guest': g, 'system': s}
40 def authenticate(self, method, credentials):
41 # system and guest cannot log in
42 return None
44 def serialize_user(self, user):
45 if user is self.users['guest']:
46 return 'guest'
47 if user is self.users['system']:
48 return 'system'
49 raise gws.Error(f'wrong user for system.serialize: {user.uid!r}')
51 def unserialize_user(self, data):
52 if data in self.users:
53 return self.users[data]
54 raise gws.Error(f'wrong data for system.unserialize: {data!r}')
56 def get_user(self, local_uid):
57 return self.users[local_uid]