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}")