Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion app/core/permissions/endpoints_permissions.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@

from app.core.groups.groups_type import GroupType
from app.core.permissions import cruds_permissions, schemas_permissions
from app.core.permissions.factory_permissions import CorePermissionsFactory
from app.dependencies import (
get_db,
is_user,
Expand All @@ -30,7 +31,7 @@
root="permissions",
tag="Permissions",
router=router,
factory=None,
factory=CorePermissionsFactory(),
)

hyperion_security_logger = logging.getLogger("hyperion.security")
Expand Down
31 changes: 31 additions & 0 deletions app/core/permissions/factory_permissions.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
from sqlalchemy.ext.asyncio import AsyncSession

from app.core.groups.groups_type import GroupType
from app.core.permissions import cruds_permissions, schemas_permissions
from app.core.utils.config import Settings
from app.module import permissions_list
from app.types.factory import Factory


class CorePermissionsFactory(Factory):
depends_on = []

@classmethod
async def run(cls, db: AsyncSession, settings: Settings) -> None:
for permission in permissions_list:
await cruds_permissions.create_group_permission(
permission=schemas_permissions.CoreGroupPermission(
permission_name=permission,
group_id=GroupType.admin.value,
),
db=db,
)
await db.commit()

@classmethod
async def should_run(cls, db: AsyncSession):
permissions = await cruds_permissions.get_permissions(
permissions_list,
db,
)
return not any(permission.groups for permission in permissions)
Loading