File size: 886 Bytes
ce0719e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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()