from fastapi import FastAPI, Depends, HTTPException from fastapi.responses import JSONResponse, RedirectResponse from requests import request from app.cabletv.utils.auth import exchange_code_for_token, get_current_user, DOMAIN, CLIENT_ID app = FastAPI() @app.get("/") async def root(): return {"message": "IPTV Updater API"} @app.get("/protected") async def protected_route(user = Depends(get_current_user)): if isinstance(user, RedirectResponse): return user return {"message": "Protected content", "user": user['Username']} @app.get("/auth/callback") async def auth_callback(code: str): try: redirect_uri = str(request.base_url) + "auth/callback" tokens = exchange_code_for_token(code, redirect_uri) response = JSONResponse(content={ "message": "Authentication successful", "id_token": tokens["id_token"] # Changed from access_token }) response.set_cookie( key="token", value=tokens["id_token"], # Changed from access_token httponly=True, secure=True, samesite="lax" ) return response except Exception as e: raise HTTPException( status_code=400, detail=f"Authentication failed: {str(e)}" )