Coverage for src/lexigram/admin/rbac/registry.py: 60%
10 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-24 23:39 +0800
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-24 23:39 +0800
1"""Global registry for permissions and roles."""
3from __future__ import annotations
5from typing import TYPE_CHECKING
7from lexigram.admin.rbac.schema import ResourcePermissions
9if TYPE_CHECKING:
10 from lexigram.admin.rbac.service import PermissionService
12_resource_registry: dict[str, ResourcePermissions] = {}
15def register_resource_permissions(
16 resource_name: str,
17 permissions: ResourcePermissions,
18 permission_service: PermissionService | None = None,
19) -> None:
20 """Register permissions for a resource.
22 Args:
23 resource_name: Name of the resource.
24 permissions: Permission schema to register.
25 permission_service: Injected :class:`~lexigram.admin.rbac.service.PermissionService`
26 instance. When provided, the schema is also registered on the service.
27 """
28 _resource_registry[resource_name] = permissions
29 if permission_service is not None:
30 permission_service.register(resource_name, permissions)
33def get_resource_permissions(resource_name: str) -> ResourcePermissions:
34 """Get registered permissions for a resource."""
35 return _resource_registry.get(resource_name, ResourcePermissions())