Coverage for src/lexigram/admin/ui/organisms/data_table/permissions.py: 67%
12 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-24 23:31 +0800
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-24 23:31 +0800
1"""Permission and RBAC logic for data table component."""
3from __future__ import annotations
5from typing import Any
8class PermissionManager:
9 """Manages permissions for data table operations."""
11 def __init__(
12 self,
13 user: Any = None,
14 resource_name: str | None = None,
15 permission_service: Any = None,
16 ):
17 self.user = user
18 self.resource_name = resource_name
19 self._permission_service = permission_service
21 async def check_permissions(self) -> dict[str, bool]:
22 """Check CRUD permissions for the resource."""
23 if not self.user or not self.resource_name or self._permission_service is None:
24 return {
25 "can_view": True,
26 "can_create": True,
27 "can_update": True,
28 "can_delete": True,
29 }
31 _perm_svc = self._permission_service
32 return {
33 "can_view": await _perm_svc.can_view(self.user, self.resource_name),
34 "can_create": await _perm_svc.can_create(self.user, self.resource_name),
35 "can_update": await _perm_svc.can_edit(self.user, self.resource_name),
36 "can_delete": await _perm_svc.can_delete(self.user, self.resource_name),
37 }