Skip to content

Composite Permission Checker

composite_permission_checker

Composite permission checker with OR logic.

CompositePermissionChecker

Combines multiple :class:PermissionChecker instances with OR logic.

Source code in src/forging_blocks/domain/permissions/composite_permission_checker.py
class CompositePermissionChecker:
    """Combines multiple :class:`PermissionChecker` instances with OR logic."""

    __match_args__ = ("_checkers",)

    def __init__(self, checkers: list[PermissionChecker]) -> None:
        self._checkers = checkers

    async def check(self, context: AuthorizationContext, permission: Permission) -> bool:
        for checker in self._checkers:
            if await checker.check(context, permission):
                return True
        return False