Loginauth / main.py
Gregniuki's picture
Update main.py
b72a9f9
raw
history blame
2.27 kB
from fastapi import FastAPI, Depends, HTTPException, APIRouter
from fastapi.requests import Request
from fastapi.responses import HTMLResponse
from fastapi.templating import Jinja2Templates
from sqlalchemy.orm import Session
from auth import verify_token, oauth2_scheme
from database import get_db, get_user_by_email
import auth
import tts
app = FastAPI()
router = APIRouter()
templates = Jinja2Templates(directory="templates")
# Include the authentication router with the prefix '/auth'
#app.include_router(auth.router, prefix="/auth")
# Include the TTS router with the prefix '/tts'
#app.include_router(tts.router, prefix="/tts")
# Dependency for verifying the user's token
def get_current_user(token: str = Depends(verify_token)):
if not token:
raise HTTPException(status_code=401, detail="Token not valid")
return token
@app.get("/login", response_class=HTMLResponse)
async def login(request: Request):
return templates.TemplateResponse("login.html", {"request": request})
@app.get("/register", response_class=HTMLResponse)
async def register(request: Request):
return templates.TemplateResponse("register.html", {"request": request})
@app.get("/verify/{verification_token}", response_class=HTMLResponse)
async def verify_email(verification_token: str, request: Request):
# Perform verification and return an appropriate template
return templates.TemplateResponse("verify.html", {"request": request})
# User authentication (protected route)
@app.get("/protected", response_model=str)
async def protected_route(request: Request, token: str = Depends(oauth2_scheme), db: Session = Depends(get_db)):
# Verify the access token
user = verify_token(token, "your-secret-key", "HS256")
if user is None:
raise HTTPException(status_code=401, detail="Invalid or expired token")
# Check if the user exists in the database
db_user = get_user_by_email(db, user) # Modify this to match your database query
if db_user is None:
raise HTTPException(status_code=401, detail="User not found in the database")
# The user exists in the database, and you can render the protected route template
return templates.TemplateResponse("protected.html", {"request": request, "user": db_user.username})