46 lines
1.2 KiB
Python
46 lines
1.2 KiB
Python
from fastapi import APIRouter, Depends, status
|
|
from fastapi.responses import JSONResponse
|
|
|
|
from ..config import CRYPT_CONTEXT, DB
|
|
from ..db import Certificate, DistinguishedName, User, UserCapability
|
|
|
|
router = APIRouter(prefix="/install")
|
|
|
|
|
|
async def is_installed():
|
|
return DB.table_exists(User)
|
|
|
|
|
|
@router.get("/check_installed", responses={
|
|
status.HTTP_200_OK: {
|
|
"model": bool,
|
|
},
|
|
})
|
|
async def check_installed(is_installed: bool = Depends(is_installed)):
|
|
return is_installed
|
|
|
|
|
|
@router.get("/create_db", responses={
|
|
status.HTTP_200_OK: {
|
|
"description": "Database created",
|
|
"content": None,
|
|
},
|
|
status.HTTP_400_BAD_REQUEST: {
|
|
"description": "Could not create Database",
|
|
"content": None,
|
|
}
|
|
})
|
|
async def create_db(is_installed: bool = Depends(is_installed)):
|
|
if is_installed:
|
|
return JSONResponse(
|
|
status_code=status.HTTP_400_BAD_REQUEST,
|
|
)
|
|
|
|
DB.create_tables([Certificate, DistinguishedName, User, UserCapability])
|
|
|
|
admin = User.create(name="admin", password=CRYPT_CONTEXT.hash("secret"))
|
|
UserCapability.create(user=admin, capability="admin")
|
|
|
|
User.create(name="johndoe", password=CRYPT_CONTEXT.hash("secret"))
|
|
|
|
DB.close()
|