fooder-api/fooder/controller/user.py

24 lines
710 B
Python

from fooder.controller.base import ModelController
from fooder.controller.token import TokenController
from fooder.domain import User
from fooder.context import Context
from fooder.exc import Unauthorized
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)