"""Gemeinsame FastAPI-Abhängigkeiten: aktueller Benutzer (Cookie), Admin-Pflicht. Die Anmeldung läuft über eine server-seitige Sitzung im Cookie (siehe ``services/sessions``). ``get_current_user`` liest das Cookie, prüft die Sitzung und liefert den Benutzer – oder 401. """ from fastapi import Depends, HTTPException, Request, status from sqlalchemy.orm import Session from .config import get_settings from .database import get_db from .models import Role, User from .services import sessions _credentials_exc = HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="Nicht angemeldet oder Sitzung abgelaufen", ) def get_current_user(request: Request, db: Session = Depends(get_db)) -> User: token = request.cookies.get(get_settings().cookie_name, "") user = sessions.validate(db, token) if user is None: raise _credentials_exc return user def require_admin(current_user: User = Depends(get_current_user)) -> User: if current_user.role != Role.admin: raise HTTPException( status_code=status.HTTP_403_FORBIDDEN, detail="Nur Administratoren dürfen diese Aktion ausführen", ) return current_user