diff --git a/.env.dev b/.env.dev index 6f1293e..db6b050 100644 --- a/.env.dev +++ b/.env.dev @@ -5,4 +5,9 @@ CGNO_ID_DB_USERNAME=root CGNO_ID_DB_PASSWORD=root CGNO_ID_DB_HOST=127.0.0.1 CGNO_ID_DB_NAME=cgno-id +# + +# Root +CGNO_ROOT_EMAIL=cognioandrey@gmail.com +CGNO_ROOT_PASSWORD=password # \ No newline at end of file diff --git a/app/main.py b/app/main.py index 62779aa..385045f 100644 --- a/app/main.py +++ b/app/main.py @@ -3,6 +3,7 @@ from starlette.middleware.cors import CORSMiddleware from app.user.handlers import router as user_router from app.auth.handlers import router as auth_router +from app.user.root import init_root_user def main_router() -> APIRouter: @@ -14,6 +15,7 @@ def main_router() -> APIRouter: app = FastAPI(title="cognio ID API") +app.add_event_handler("startup", init_root_user) app.add_middleware( CORSMiddleware, allow_origins=["*"], diff --git a/app/user/handlers.py b/app/user/handlers.py index f453f79..f26f57d 100644 --- a/app/user/handlers.py +++ b/app/user/handlers.py @@ -14,7 +14,11 @@ router = APIRouter() @router.post("", status_code=201, response_model=UserResourceModel) -async def create_user(model: UserCreationModel, db: Session = Depends(get_db)) -> UserResourceModel: +async def create_user( + model: UserCreationModel, + db: Session = Depends(get_db), + auth_user: User = Depends(get_auth_user) +) -> UserResourceModel: user = model.to_entity() created_user = user_service.create_user(db, user) return UserResourceModel.from_entity(created_user) diff --git a/app/user/root.py b/app/user/root.py new file mode 100644 index 0000000..050ff35 --- /dev/null +++ b/app/user/root.py @@ -0,0 +1,21 @@ +from datetime import date + +from app.config import config +from app.db import session_factory +from app.user import service as user_service +from app.user.model import User + + +def init_root_user(): + db = session_factory() + root_user = user_service.get_user_by_username(db, "root") + + if root_user is None: + user_service.create_user(db, User( + username="root", + email=config["CGNO_ROOT_EMAIL"], + password=config["CGNO_ROOT_PASSWORD"], + given_name="Root", + birthdate=date.today() + )) + db.close()