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
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-17 01:37 +0200
1"""Check user logins and logouts."""
3from typing import Optional, cast
5import gws
6import gws.base.action
7import gws.base.auth.user
9from . import core
11gws.ext.new.action('auth')
14class Config(gws.base.action.Config):
15 pass
18class Props(gws.base.action.Props):
19 pass
22class Object(gws.base.action.Object):
23 method: Optional[core.Object]
25 def configure(self):
26 self.method = self.configure_method()
27 if not self.method:
28 raise gws.Error('web authorization method required')
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)
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))
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)
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)
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)
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)