Initial MVP skeleton with auth, chat persistence, UI and text LLM integration
This commit is contained in:
30
backend/app/api/deps.py
Normal file
30
backend/app/api/deps.py
Normal file
@@ -0,0 +1,30 @@
|
||||
import os
|
||||
from datetime import datetime, timezone
|
||||
|
||||
from fastapi import Depends, HTTPException, Request, status
|
||||
from sqlalchemy.orm import Session as DBSession
|
||||
|
||||
from app.db.session import get_db
|
||||
from app.db.models import Session, User
|
||||
|
||||
COOKIE_NAME = os.getenv("SESSION_COOKIE_NAME", "ai_chat_session")
|
||||
|
||||
def get_current_user(request: Request, db: DBSession = Depends(get_db)) -> User:
|
||||
session_id = request.cookies.get(COOKIE_NAME)
|
||||
if not session_id:
|
||||
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Not authenticated")
|
||||
|
||||
db_session = db.get(Session, session_id)
|
||||
if not db_session:
|
||||
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid session")
|
||||
|
||||
if db_session.expires_at < datetime.now(timezone.utc).replace(tzinfo=None):
|
||||
db.delete(db_session)
|
||||
db.commit()
|
||||
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Session expired")
|
||||
|
||||
user = db_session.user
|
||||
if not user or not user.is_active:
|
||||
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="User inactive")
|
||||
|
||||
return user
|
||||
Reference in New Issue
Block a user