from __future__ import annotations from typing import Optional from fastapi import Request from sqlalchemy.orm import Session from app.models import Admin, User def get_current_user(request: Request, db: Session) -> Optional[User]: user_id = request.session.get("user_id") if not user_id: return None return db.get(User, user_id) def get_current_admin(request: Request, db: Session) -> Optional[Admin]: admin_id = request.session.get("admin_id") if not admin_id: return None return db.get(Admin, admin_id) def sign_in_user(request: Request, user: User) -> None: request.session.clear() request.session["user_id"] = user.id def sign_in_admin(request: Request, admin: Admin) -> None: request.session.clear() request.session["admin_id"] = admin.id def sign_out(request: Request) -> None: request.session.clear()