Coverage for gws-app/gws/plugin/auth_method/web/action.py: 84%
37 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-16 23:09 +0200
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-16 23:09 +0200
1"""Check user logins and logouts."""
3from typing import cast
5import gws
6import gws.base.action
8from . import core
10gws.ext.new.action('auth')
13class Config(gws.base.action.Config):
14 """Web-based authorization action configuration."""
16 pass
19class Props(gws.base.action.Props):
20 pass
23class Object(gws.base.action.Object):
24 method: core.Object
26 def configure(self):
27 m = self.configure_method()
28 if not m:
29 raise gws.Error('web authorization method required')
30 self.method = m
32 def configure_method(self):
33 for m in self.root.app.authMgr.methods:
34 if m.extType == 'web':
35 return cast(core.Object, m)
37 @gws.ext.command.api('authCheck')
38 def check(self, req: gws.WebRequester, p: gws.Request) -> core.UserResponse:
39 if req.user.isGuest:
40 return core.UserResponse(user=None)
41 return core.UserResponse(user=gws.props_of(req.user, req.user))
43 @gws.ext.command.api('authLogin')
44 def login(self, req: gws.WebRequester, p: core.LoginRequest) -> core.LoginResponse:
45 return self.method.handle_login(req, p)
47 @gws.ext.command.api('authMfaVerify')
48 def mfa_verify(self, req: gws.WebRequester, p: core.MfaVerifyRequest) -> core.LoginResponse:
49 return self.method.handle_mfa_verify(req, p)
51 @gws.ext.command.api('authMfaRestart')
52 def mfa_restart(self, req: gws.WebRequester, p: gws.Request) -> core.LoginResponse:
53 return self.method.handle_mfa_restart(req, p)
55 @gws.ext.command.api('authLogout')
56 def logout(self, req: gws.WebRequester, p: gws.Request) -> core.LogoutResponse:
57 return self.method.handle_logout(req)