24 lines
661 B
Python
24 lines
661 B
Python
from .base import ModelController
|
|
from ..domain import User
|
|
from ..context import Context
|
|
from ..exc import Unauthorized
|
|
from .token import TokenController
|
|
|
|
|
|
class UserController(ModelController[User]):
|
|
@classmethod
|
|
async def session_start(
|
|
cls,
|
|
ctx: Context,
|
|
username: str,
|
|
password: str,
|
|
) -> "UserController":
|
|
obj = await ctx.repo.user.get(User.username == username)
|
|
|
|
if obj is None or not obj.verify_password(password):
|
|
raise Unauthorized()
|
|
|
|
return cls(ctx, obj)
|
|
|
|
def token_ctrl(self) -> TokenController:
|
|
return TokenController(ctx=self.ctx, entity_id=self.obj.id)
|