This commit is contained in:
jze9
2025-04-01 23:27:36 +05:00
commit 4c72b79e86
49 changed files with 19305 additions and 0 deletions

View File

@@ -0,0 +1,57 @@
import os
from fastapi import FastAPI, Depends, HTTPException
from fastapi.security import HTTPBasic, HTTPBasicCredentials
from fastapi.openapi.docs import get_swagger_ui_html, get_redoc_html
from fastapi.openapi.utils import get_openapi
from router import router
from dotenv import load_dotenv
# Загрузите переменные окружения из файла .env
load_dotenv()
app = FastAPI(title="api-data-base")
security = HTTPBasic()
# Создайте функцию для проверки доступа
def authenticate(credentials: HTTPBasicCredentials = Depends(security)):
correct_username = os.getenv("DOCS_USERNAME", "admin") # Укажите имя пользователя
correct_password = os.getenv("DOCS_PASSWORD", "admin") # Укажите пароль
if credentials.username == correct_username and credentials.password == correct_password:
return True
raise HTTPException(
status_code=401,
detail="Неверное имя пользователя или пароль",
headers={"WWW-Authenticate": "Basic"},
)
# Переопределите маршруты для документации
@app.get("/docs", include_in_schema=False)
def custom_swagger_ui(credentials: HTTPBasicCredentials = Depends(authenticate)):
return get_swagger_ui_html(openapi_url=app.openapi_url, title="Документация API")
@app.get("/redoc", include_in_schema=False)
def custom_redoc_html(credentials: HTTPBasicCredentials = Depends(authenticate)):
return get_redoc_html(openapi_url=app.openapi_url, title="Документация API")
# Настройте кастомный OpenAPI (если требуется)
def custom_openapi():
if app.openapi_schema:
return app.openapi_schema
openapi_schema = get_openapi(
title="Пример API",
version="1.0.0",
description="Документация защищена паролем",
routes=app.routes,
)
app.openapi_schema = openapi_schema
return app.openapi_schema
app.openapi = custom_openapi
app.include_router(router)
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8001)