Skip to content
Extraits de code Groupes Projets
Valider 7188e289 rédigé par Brieuc Dubois's avatar Brieuc Dubois
Parcourir les fichiers

Create admin user on first statt & start uvicorn

parent ed9caf01
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -10,4 +10,7 @@ ACCESS_TOKEN_EXPIRE_MINUTES = int(os.getenv("ACCESS_TOKEN_EXPIRE_MINUTES", "60")
REFRESH_TOKEN_EXPIRE_MINUTES = int(os.getenv("REFRESH_TOKEN_EXPIRE_MINUTES", "10080")) # 7 days
ALGORITHM = "HS256"
JWT_SECRET_KEY = os.getenv('JWT_SECRET_KEY', secrets.token_urlsafe(32))
JWT_REFRESH_SECRET_KEY = os.getenv('JWT_REFRESH_SECRET_KEY', secrets.token_urlsafe(32))
\ No newline at end of file
JWT_REFRESH_SECRET_KEY = os.getenv('JWT_REFRESH_SECRET_KEY', secrets.token_urlsafe(32))
ADMIN_USERNAME = os.getenv('ADMIN_USERNAME', 'admin')
ADMIN_PASSWORD = os.getenv('ADMIN_PASSWORD', 'admin')
DEBUG = os.getenv('DEBUG', 'false').lower() in ('true', '1')
\ No newline at end of file
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
import os
import config
......
from fastapi import FastAPI, status, Depends, HTTPException
from sqlalchemy.orm import Session
from fastapi.security import OAuth2PasswordRequestForm
from contextlib import asynccontextmanager
import schemas, crud
import models
from database import Base, engine, get_db
from database import Base, engine, get_db, SessionLocal
import hashing
from utils import check_user_level
import config
@asynccontextmanager
async def lifespan(app: FastAPI):
db = SessionLocal()
try:
if crud.get_user_by_username(db, config.ADMIN_USERNAME) is None:
crud.create_user(db, schemas.UserCreate(username=config.ADMIN_USERNAME, password=config.ADMIN_PASSWORD, type=models.UserType.ADMIN.value))
finally:
db.close()
yield
Base.metadata.create_all(bind=engine)
app = FastAPI()
app = FastAPI(lifespan=lifespan)
@app.get("/health", status_code=status.HTTP_200_OK)
......@@ -172,4 +184,9 @@ def invite_to_session(session_id: int, db: Session = Depends(get_db), current_us
if not check_user_level(current_user, models.UserType.ADMIN) and current_user not in db_session.users:
raise HTTPException(status_code=401, detail="You do not have permission to invite to this session")
return f"/sessions/{db_session.id}/join/{db_session.token}"
\ No newline at end of file
return f"/sessions/{db_session.id}/join/{db_session.token}"
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000, reload=config.DEBUG)
\ No newline at end of file
......@@ -4,3 +4,4 @@ sqlalchemy>=2.0.0,<2.1.0
passlib>=1.7.0,<1.8.0
python-jose>=3.3.0,<3.4.0
python-multipart>=0.0.0,<0.1.0
bcrypt==4.0.1
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter