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}) | |