fooder-api/fooder/controller/user.py

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)