webclient / app /main.py
ariansyahdedy's picture
Edit templates
b815660
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
@app.get("/", response_class=HTMLResponse)
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)
@app.get("/login", response_class=HTMLResponse)
async def login_form(request: Request):
return templates.TemplateResponse("login.html", {"request": request})
@app.get("/logout")
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})
@app.get("/success", response_class=HTMLResponse)
async def read_success(request: Request):
return templates.TemplateResponse("success.html", {"request": request})