11from __future__ import annotations
22
3+ from collections .abc import Mapping
34from dataclasses import dataclass , field
45from typing import override
56from uuid import UUID
67
78from ai .backend .common .data .permission .types import EntityType , OperationType , RBACElementType
8- from ai .backend .manager .actions .action import BaseActionResult
9+ from ai .backend .manager .actions .action import BaseAction , BaseActionResult
910from ai .backend .manager .actions .types import ActionOperationType
10- from ai .backend .manager .services .permission_contoller .actions .base import RoleAction
1111
1212
1313@dataclass
14- class ResolveEffectivePermissionsAction (RoleAction ):
14+ class ResolveEffectivePermissionsAction (BaseAction ):
1515 """Action to resolve effective permissions per entity for a given user.
1616
1717 Given a user ID, an element type, and a list of entity IDs, returns the
@@ -28,6 +28,11 @@ class ResolveEffectivePermissionsAction(RoleAction):
2828 def entity_id (self ) -> str | None :
2929 return str (self .user_id )
3030
31+ @override
32+ @classmethod
33+ def entity_type (cls ) -> EntityType :
34+ return EntityType .PERMISSION
35+
3136 @override
3237 @classmethod
3338 def operation_type (cls ) -> ActionOperationType :
@@ -38,7 +43,7 @@ def operation_type(cls) -> ActionOperationType:
3843class ResolveEffectivePermissionsActionResult (BaseActionResult ):
3944 """Result containing the effective permissions per entity."""
4045
41- permissions : dict [str , set [OperationType ]] = field (default_factory = dict )
46+ permissions : Mapping [str , set [OperationType ]] = field (default_factory = dict )
4247
4348 @override
4449 def entity_id (self ) -> str | None :
0 commit comments