401 / app.py
Junaidb's picture
Update app.py
d050638 verified
from fastapi import FastAPI,Request,HTTPException,Response
from pydantic import BaseModel
from fastapi.responses import JSONResponse
import uuid
from fastapi.middleware.cors import CORSMiddleware
import json
import base64
from components.middleware import x401Kit
from components.mongodbconnection import provideClient
import hashlib
import secrets
app=FastAPI()
dbclient=provideClient()
db=dbclient["sdklogs_db"]
col=db["sdklogs_col"]
origins=["*"]
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
app.add_middleware(
x401Kit,
protected_paths=[
"/x401_auth"
]
)
def generate_sha256_hex_challenge():
random_data = secrets.token_bytes(32)
challenge = hashlib.sha256(random_data).hexdigest()
return challenge
@app.get("/x401_auth")
def Auth401(request:Request):
return {"token":""}
@app.get("/x401_web_auth_challange")
def WebAuthChallange(request:Request):
challange=generate_sha256_hex_challenge()
return {"challange":challange}
@app.get("/sdklogs/{id}")
def SDKLog(id):
document=col.find_one({"owner":"system"})
details=None
if document:
logs=document["logs"]
for data in logs:
if data.signer==id:
details=data
return JSONResponse(content={"details":details})