from fastapi import APIRouter, HTTPException, Depends, Header import logging import db import auth.api_security as auth from pydantic import BaseModel def check_token(token:str = Header(...)): if not auth.check_token(token): raise HTTPException(status_code=401, detail="Invalid token") return token def check_admin_token(admin_token: str = Header(...)): if not auth.check_admin_token(admin_token): raise HTTPException(status_code=401, detail="No admin token") return admin_token #Logging logging.basicConfig( filename='api.log', # Log to a file level=logging.DEBUG, # Log everything (DEBUG and above) format='%(asctime)s %(levelname)s %(message)s' ) logging.info('Application started') try: logging.debug('Debug info here') except Exception as e: logging.exception('An error occurred') router = APIRouter(prefix="/tokens", tags=["tokens"]) class Item_duration(BaseModel): duration: str | int class Item_token(BaseModel): token: str @router.get("/help") def help(): return{"duration": "string or int"} @router.post("/create") def create_token(duration: Item_duration, admin_token: str = Depends(check_admin_token)): new_token = auth.generate_token(duration.duration) return {"new token": new_token} @router.delete("/delete") def delete(token: Item_token, admin_token: str = Depends(check_admin_token)): auth.delete_token(token.token) return {"messages": "token deleted"} @router.get("/test") def test(token: str = Depends(check_token)): return {"message": "you can authenticate", "status": "ok"}