| 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()
|
|
|