from starlette.responses import FileResponse from fastapi import Depends, FastAPI import models app = FastAPI() app.add_middleware(BaseHTTPMiddleware, dispatch=middleware.db_session_middleware) if not database_exists(engine.url): models.Base.metadata.create_all(engine) # Create default user _db: Session = SessionLocal() _db.add(models.User( username=os.getenv("ADMIN_USERNAME", "admin"), password=middleware.get_password_hash(os.getenv("ADMIN_PASSWORD", "admin")), full_name="Admin", role="admin", email="" )) _db.commit() _db.close() app.include_router( user.router, prefix="/api/v1", tags=["user"], dependencies=[], responses={404: {"description": "Not found"}} )
def edit(form_data: schemas.UserInDB, user: schemas.UserInDB = Depends(middleware.auth), sess: Session = Depends(middleware.get_db)): form_data.password = middleware.get_password_hash(form_data.password) form_data.sync(sess) return form_data
) ADMIN_PASSWORD = os.getenv("ADMIN_PASSWORD") if not ADMIN_PASSWORD: raise RuntimeError( "Database does not exist and the environment variable ADMIN_PASSWORD is not set" ) # Create database from metadata models.Base.metadata.create_all(engine) # Create default user _db.merge( models.User(username=ADMIN_USERNAME, password=middleware.get_password_hash(ADMIN_PASSWORD), full_name="Admin", role="admin", email="")) _db.commit() # Do migrations try: main(["version_control", DATABASE_URL, "migrations"]) except DatabaseAlreadyControlledError: pass main(["upgrade", DATABASE_URL, "migrations"]) servers: typing.List[models.WGServer] = _db.query(models.WGServer).all() for s in servers: try: