Source code for mindroot.coreplugins.jwt_auth.router
from fastapi import APIRouter, Depends, HTTPException, Form, Response
from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
from .middleware import create_access_token, decode_token
from lib.route_decorators import public_routes, public_route
from pydantic import BaseModel
router = APIRouter()
security = HTTPBearer()
[docs]
class LoginRequest(BaseModel):
username: str
password: str
#@router.post("/login")
#@public_route()
#async def login(response: Response, username: str = Form(...), password: str = Form(...)):
# print("login()")
# if username == "testuser" and password == "testpass":
# access_token = create_access_token(data={"sub": username})
# response.set_cookie(key="access_token", value=access_token, max_age=604800)
# return {"access_token": access_token, "token_type": "bearer"}
# raise HTTPException(status_code=400, detail="Incorrect username or password")
[docs]
@router.get("/protected")
async def protected_route(token: HTTPAuthorizationCredentials = Depends(security)):
payload = decode_token(token.credentials)
return {"message": f"Hello, {payload['sub']}! This is a protected route."}