From 3ed88cd8b366d6ac2210d7eb9f88889407762a9e Mon Sep 17 00:00:00 2001 From: KittenTM Date: Sat, 21 Feb 2026 06:05:59 +0100 Subject: [PATCH] Add route to fetch profile info w/ session_id --- main.py | 3 +++ routes/me.py | 45 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 routes/me.py diff --git a/main.py b/main.py index 1c7d08e..4f89cf4 100644 --- a/main.py +++ b/main.py @@ -6,6 +6,8 @@ from fastapi.middleware.cors import CORSMiddleware from database import init_db from routes import logout from routes import boss +#yes meow meow import me please... i want to be embedded into my code... :pleading_face: +from routes import me from services.boss_retrieval import process_boss_file from contextlib import asynccontextmanager import asyncio @@ -51,6 +53,7 @@ app.include_router(sso.router, prefix="/api/v2/sso") app.include_router(sessionid_check.router, prefix="/api/v1") app.include_router(logout.router, prefix="/api/v1") app.include_router(boss.router, prefix="/api/v1") +app.include_router(me.router, prefix="/api/v1") if __name__ == '__main__': uvicorn.run("main:app", host="0.0.0.0", port=settings.port, reload=True) \ No newline at end of file diff --git a/routes/me.py b/routes/me.py new file mode 100644 index 0000000..c863b73 --- /dev/null +++ b/routes/me.py @@ -0,0 +1,45 @@ +from fastapi import APIRouter, Request, Depends, HTTPException +from sqlalchemy.orm import Session as DBSession +from database import SessionLocal, User, Session as UserSession +from services import auth +from config import cipher + +router = APIRouter() + +def get_db(): + db = SessionLocal() + try: + yield db + finally: + db.close() + +@router.get("/me") +async def get_my_profile(request: Request, db: DBSession = Depends(get_db)): + session_id = request.cookies.get("session_id") + if not session_id: + raise HTTPException(status_code=401, detail="No active session") + + db_session = db.query(UserSession).filter(UserSession.id == session_id).first() + if not db_session: + raise HTTPException(status_code=401, detail="Invalid session") + + user = db.query(User).filter(User.username == db_session.username).first() + if not user or not user.spfn_pass_enc: + raise HTTPException(status_code=401, detail="Credentials not found. Please re-login.") + + try: + decrypted_pass = cipher.decrypt(user.spfn_pass_enc.encode()).decode() + + token_data = auth.get_token(user.username, decrypted_pass) + if not token_data or "token" not in token_data: + raise HTTPException(status_code=401, detail="External authentication failed") + + profile_data = auth.get_profile(token_data["token"]) + if not profile_data: + raise HTTPException(status_code=404, detail="Profile not found") + + return profile_data + + except Exception as e: + print(f"Error fetching profile: {e}") + raise HTTPException(status_code=500, detail="Internal server error") \ No newline at end of file