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

1"""Built-in provider of the guest and system users.""" 

2 

3import gws 

4 

5from . import user as user_module 

6 

7 

8class Object(gws.AuthProvider): 

9 """System authentication provider. 

10 

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 """ 

14 

15 users: dict 

16 """The guest and system users, keyed by ``guest`` and ``system``.""" 

17 type = 'system' 

18 """Provider type.""" 

19 

20 def configure(self): 

21 self.uid = 'gws.base.auth.provider.system' 

22 self.allowedMethods = [] 

23 

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) 

30 

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) 

37 

38 self.users = {'guest': g, 'system': s} 

39 

40 def authenticate(self, method, credentials): 

41 # system and guest cannot log in 

42 return None 

43 

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}') 

50 

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}') 

55 

56 def get_user(self, local_uid): 

57 return self.users[local_uid]