Team Ai
Apppublic

deepak2563/opensourcetranscriptmaker

sourceHugging Faceunknownupdated 4mo agoView on Hugging Face
0likes
access.py36 linesDownload Raw Back to routes
1from fastapi import APIRouter, HTTPException, Depends, Header2from fastapi.security import OAuth2PasswordBearer3from typing import Optional4from ..schemas.access import UnlockRequest, UnlockResponse, SessionResponse, LogoutResponse5from ..services.access_control import verify_password, create_access_token, verify_access_token6 7router = APIRouter(prefix="/api/access", tags=["access"])8 9oauth2_scheme = OAuth2PasswordBearer(tokenUrl="api/access/unlock")10 11def get_current_user(token: str = Depends(oauth2_scheme)):12    if not verify_access_token(token):13        raise HTTPException(status_code=401, detail="Invalid or expired token")14    return "unlocked_user"15 16@router.post("/unlock", response_model=UnlockResponse)17async def unlock_app(req: UnlockRequest):18    if verify_password(req.password):19        token = create_access_token()20        return UnlockResponse(ok=True, token=token)21    return UnlockResponse(ok=False, error="Invalid password")22 23@router.get("/session", response_model=SessionResponse)24async def check_session(authorization: Optional[str] = Header(None)):25    if authorization and authorization.startswith("Bearer "):26        token = authorization.split(" ")[1]27        if verify_access_token(token):28            return SessionResponse(ok=True, unlocked=True)29    return SessionResponse(ok=True, unlocked=False)30 31@router.post("/logout", response_model=LogoutResponse)32async def logout():33    # Client will just delete the token34    return LogoutResponse(ok=True)35 36