Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI, Request | |
| from fastapi.responses import HTMLResponse, RedirectResponse, JSONResponse | |
| from fastapi.templating import Jinja2Templates | |
| from fastapi.responses import HTMLResponse | |
| from starlette.middleware.sessions import SessionMiddleware | |
| from fastapi.staticfiles import StaticFiles | |
| # from starlette.middleware.proxy_headers import ProxyHeadersMiddleware | |
| import os | |
| # BEFORE creating the FastAPI app | |
| os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1" | |
| # Routers | |
| from app.routes import auth, youtube | |
| from app.config import templates | |
| # For rendering HTML templates | |
| app = FastAPI() | |
| app.mount("/static", StaticFiles(directory="static"), name="static") | |
| # Set a secret key for session cookies (Use a strong key in production!) | |
| app.add_middleware(SessionMiddleware, secret_key="CHANGE_THIS_SECRET") | |
| # Include our routers | |
| app.include_router(auth.router) | |
| app.include_router(youtube.router) | |
| # 1) Root route => Decide if user is logged in; if not, go to /login | |
| async def root_redirect(request: Request): | |
| token = request.cookies.get("token") | |
| if token: | |
| return RedirectResponse(url="/videos", status_code=303) | |
| else: | |
| return RedirectResponse(url="/login", status_code=303) | |
| # 2) Show the login form (GET /login) | |
| async def login_form(request: Request): | |
| return templates.TemplateResponse("login.html", {"request": request}) | |
| async def logout(): | |
| response = RedirectResponse(url="/login") | |
| response.delete_cookie("token") | |
| return response | |
| # @app.get("/", response_class=HTMLResponse) | |
| # async def read_root(request: Request): | |
| # return templates.TemplateResponse("login.html", {"request": request}) | |
| async def read_success(request: Request): | |
| return templates.TemplateResponse("success.html", {"request": request}) | |