40 lines
1.9 KiB
Python
40 lines
1.9 KiB
Python
import logging
|
|
|
|
from backend.models.permission import PermissionDoc, RoleDoc
|
|
from backend.models.permission.constants import DefaultPermissionEnum, DefaultRoleEnum
|
|
|
|
|
|
def register(app):
|
|
# Configure logging for pymongo
|
|
logging.getLogger("init_admin_permission").setLevel(logging.INFO) # Suppress DEBUG logs
|
|
|
|
@app.on_event("startup")
|
|
async def init_admin_permission():
|
|
# Initialize permissions if not exist
|
|
default_permission_ids = []
|
|
for default_permission in [DefaultPermissionEnum.CHANGE_PERMISSIONS, DefaultPermissionEnum.CHANGE_ROLES]:
|
|
if not await PermissionDoc.find_one(
|
|
{str(PermissionDoc.permission_key): default_permission.value.permission_key}):
|
|
doc = await PermissionDoc(
|
|
permission_key=default_permission.value.permission_key,
|
|
permission_name=default_permission.value.permission_name,
|
|
description=default_permission.value.permission_description,
|
|
is_default=True,
|
|
).insert()
|
|
default_permission_ids.append(str(doc.id))
|
|
logging.info(f"default permissions initialized {default_permission_ids}")
|
|
# Initialize roles if not exist
|
|
default_role_ids = []
|
|
for default_role in [DefaultRoleEnum.ADMIN]:
|
|
if not await RoleDoc.find_one({str(RoleDoc.role_key): default_role.value.role_key}):
|
|
doc = await RoleDoc(
|
|
role_key=default_role.value.role_key,
|
|
role_name=default_role.value.role_name,
|
|
role_description=default_role.value.role_description,
|
|
permission_ids=default_permission_ids,
|
|
role_level=default_role.value.role_level,
|
|
is_default=True,
|
|
).insert()
|
|
default_role_ids.append(str(doc.id))
|
|
logging.info(f"default roles initialized {default_role_ids}")
|