Coverage for gws-app/gws/base/auth/session_manager.py: 100%

14 statements  

« prev     ^ index     » next       coverage.py v7.16.2, created at 2026-10-05 13:35 +0200

1"""Base session manager.""" 

2 

3from typing import Optional 

4 

5import gws 

6import gws.lib.datetimex 

7 

8 

9class Config(gws.Config): 

10 """Configuration for the session manager.""" 

11 

12 lifeTime: gws.Duration = '20m' 

13 """Session life time, counted from the last request.""" 

14 maxLifeTime: Optional[gws.Duration] 

15 """Absolute session life time, counted from the login.""" 

16 

17 

18class Object(gws.AuthSessionManager): 

19 """Base session manager. 

20 

21 Reads the session life times. Subclasses implement the storage of sessions. 

22 """ 

23 

24 def configure(self): 

25 self.lifeTime = self.cfg('lifeTime', default=gws.lib.datetimex.parse_duration(Config.lifeTime)) 

26 

27 p = self.cfg('maxLifeTime') or 0 

28 if 0 < p < self.lifeTime: 

29 raise gws.ConfigurationError(f'invalid maxLifeTime={p}, must not be less than lifeTime={self.lifeTime}') 

30 self.maxLifeTime = p