Coverage for gws-app/gws/plugin/auth_method/web/action.py: 0%

37 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-04-17 01:37 +0200

1"""Check user logins and logouts.""" 

2 

3from typing import Optional, cast 

4 

5import gws 

6import gws.base.action 

7import gws.base.auth.user 

8 

9from . import core 

10 

11gws.ext.new.action('auth') 

12 

13 

14class Config(gws.base.action.Config): 

15 pass 

16 

17 

18class Props(gws.base.action.Props): 

19 pass 

20 

21 

22class Object(gws.base.action.Object): 

23 method: Optional[core.Object] 

24 

25 def configure(self): 

26 self.method = self.configure_method() 

27 if not self.method: 

28 raise gws.Error('web authorization method required') 

29 

30 def configure_method(self): 

31 for m in self.root.app.authMgr.methods: 

32 if m.extType == 'web': 

33 return cast(core.Object, m) 

34 

35 @gws.ext.command.api('authCheck') 

36 def check(self, req: gws.WebRequester, p: gws.Request) -> core.UserResponse: 

37 if req.user.isGuest: 

38 return core.UserResponse(user=None) 

39 return core.UserResponse(user=gws.props_of(req.user, req.user)) 

40 

41 @gws.ext.command.api('authLogin') 

42 def login(self, req: gws.WebRequester, p: core.LoginRequest) -> core.LoginResponse: 

43 return self.method.handle_login(req, p) 

44 

45 @gws.ext.command.api('authMfaVerify') 

46 def mfa_verify(self, req: gws.WebRequester, p: core.MfaVerifyRequest) -> core.LoginResponse: 

47 return self.method.handle_mfa_verify(req, p) 

48 

49 @gws.ext.command.api('authMfaRestart') 

50 def mfa_restart(self, req: gws.WebRequester, p: gws.Request) -> core.LoginResponse: 

51 return self.method.handle_mfa_restart(req, p) 

52 

53 @gws.ext.command.api('authLogout') 

54 def logout(self, req: gws.WebRequester, p: gws.Request) -> core.LogoutResponse: 

55 return self.method.handle_logout(req)