Almost usable admin panel
This commit is contained in:
@@ -205,6 +205,10 @@ class DatabaseInterface(ABC):
|
||||
async def get_organization_users(self, org_id: str) -> list[tuple[User, str]]:
|
||||
"""Get all users in an organization with their roles."""
|
||||
|
||||
@abstractmethod
|
||||
async def get_roles_by_organization(self, org_id: str) -> list[Role]:
|
||||
"""List roles belonging to an organization."""
|
||||
|
||||
@abstractmethod
|
||||
async def get_user_role_in_organization(
|
||||
self, user_uuid: UUID, org_id: str
|
||||
|
||||
@@ -864,6 +864,25 @@ class DB(DatabaseInterface):
|
||||
r_dc.permissions = [row[0] for row in perms_result.fetchall()]
|
||||
return r_dc
|
||||
|
||||
async def get_roles_by_organization(self, org_id: str) -> list[Role]:
|
||||
async with self.session() as session:
|
||||
org_uuid = UUID(org_id)
|
||||
result = await session.execute(
|
||||
select(RoleModel).where(RoleModel.org_uuid == org_uuid.bytes)
|
||||
)
|
||||
role_models = result.scalars().all()
|
||||
roles: list[Role] = []
|
||||
for rm in role_models:
|
||||
r_dc = rm.as_dataclass()
|
||||
perms_result = await session.execute(
|
||||
select(RolePermission.permission_id).where(
|
||||
RolePermission.role_uuid == rm.uuid
|
||||
)
|
||||
)
|
||||
r_dc.permissions = [row[0] for row in perms_result.fetchall()]
|
||||
roles.append(r_dc)
|
||||
return roles
|
||||
|
||||
async def add_permission_to_organization(
|
||||
self, org_id: str, permission_id: str
|
||||
) -> None:
|
||||
|
||||
Reference in New Issue
Block a user