0 follower

Abstract Class Yiisoft\Rbac\SimpleAssignmentsStorage

InheritanceYiisoft\Rbac\SimpleAssignmentsStorage
ImplementsYiisoft\Rbac\AssignmentsStorageInterface

Psalm Types

Name Value
RawAssignment array{item_name: string, user_id: string, created_at: integer}

Protected Properties

Hide inherited properties

Property Type Description Defined By
$assignments array Yiisoft\Rbac\SimpleAssignmentsStorage

Property Details

Hide inherited properties

$assignments protected property
protected array $assignments = []

Method Details

Hide inherited methods

add() public method

public void add ( Yiisoft\Rbac\Assignment $assignment )
$assignment Yiisoft\Rbac\Assignment

                public function add(Assignment $assignment): void
{
    $this->assignments[$assignment->getUserId()][$assignment->getItemName()] = $assignment;
}

            
clear() public method

public void clear ( )

                public function clear(): void
{
    $this->assignments = [];
}

            
exists() public method

public boolean exists ( string $itemName, string $userId )
$itemName string
$userId string

                public function exists(string $itemName, string $userId): bool
{
    return isset($this->getByUserId($userId)[$itemName]);
}

            
filterUserItemNames() public method

public array filterUserItemNames ( string $userId, array $itemNames )
$userId string
$itemNames array

                public function filterUserItemNames(string $userId, array $itemNames): array
{
    $assignments = $this->getByUserId($userId);
    if (empty($assignments)) {
        return [];
    }
    $userItemNames = [];
    foreach ($itemNames as $itemName) {
        if (array_key_exists($itemName, $assignments)) {
            $userItemNames[] = $itemName;
        }
    }
    return $userItemNames;
}

            
get() public method

public Yiisoft\Rbac\Assignment|null get ( string $itemName, string $userId )
$itemName string
$userId string

                public function get(string $itemName, string $userId): ?Assignment
{
    return $this->getByUserId($userId)[$itemName] ?? null;
}

            
getAll() public method

public array getAll ( )

                public function getAll(): array
{
    return $this->assignments;
}

            
getByItemNames() public method

public array getByItemNames ( array $itemNames )
$itemNames array

                public function getByItemNames(array $itemNames): array
{
    $result = [];
    foreach ($this->assignments as $assignments) {
        foreach ($assignments as $userAssignment) {
            if (in_array($userAssignment->getItemName(), $itemNames, true)) {
                $result[] = $userAssignment;
            }
        }
    }
    return $result;
}

            
getByUserId() public method

public array getByUserId ( string $userId )
$userId string

                public function getByUserId(string $userId): array
{
    return $this->assignments[$userId] ?? [];
}

            
hasItem() public method

public boolean hasItem ( string $name )
$name string

                public function hasItem(string $name): bool
{
    foreach ($this->getAll() as $assignmentInfo) {
        if (array_key_exists($name, $assignmentInfo)) {
            return true;
        }
    }
    return false;
}

            
remove() public method

public void remove ( string $itemName, string $userId )
$itemName string
$userId string

                public function remove(string $itemName, string $userId): void
{
    unset($this->assignments[$userId][$itemName]);
}

            
removeByItemName() public method

public void removeByItemName ( string $itemName )
$itemName string

                public function removeByItemName(string $itemName): void
{
    foreach ($this->assignments as &$assignments) {
        unset($assignments[$itemName]);
    }
}

            
removeByUserId() public method

public void removeByUserId ( string $userId )
$userId string

                public function removeByUserId(string $userId): void
{
    $this->assignments[$userId] = [];
}

            
renameItem() public method

public void renameItem ( string $oldName, string $newName )
$oldName string
$newName string

                public function renameItem(string $oldName, string $newName): void
{
    if ($oldName === $newName) {
        return;
    }
    foreach ($this->assignments as &$assignments) {
        if (isset($assignments[$oldName])) {
            $assignments[$newName] = $assignments[$oldName]->withItemName($newName);
            unset($assignments[$oldName]);
        }
    }
}

            
userHasItem() public method

public boolean userHasItem ( string $userId, array $itemNames )
$userId string
$itemNames array

                public function userHasItem(string $userId, array $itemNames): bool
{
    $assignments = $this->getByUserId($userId);
    if (empty($assignments)) {
        return false;
    }
    foreach ($itemNames as $itemName) {
        if (array_key_exists($itemName, $assignments)) {
            return true;
        }
    }
    return false;
}