Webiny\Component\Security\Authorization\Voters\RoleVoter::vote PHP Method

vote() public method

The function must either return ACCESS_GRANTED, ACCESS_ABSTAIN or ACCESS_DENIED.
public vote ( AbstractUser $user, array $requestedRoles ) : integer
$user Webiny\Component\Security\User\AbstractUser Current user instance.
$requestedRoles array An array of requested roles for the current access map.
return integer ACCESS_GRANTED, ACCESS_ABSTAIN or ACCESS_DENIED.
    public function vote(AbstractUser $user, array $requestedRoles)
    {
        $result = self::ACCESS_ABSTAIN;
        $userRoles = $user->getRoles();
        foreach ($requestedRoles as $role) {
            if (!$this->supportsRole($role)) {
                continue;
            }
            $result = self::ACCESS_DENIED;
            foreach ($userRoles as $ur) {
                /**
                 * @var $ur Role
                 */
                if ($role->getRole() === $ur->getRole()) {
                    return self::ACCESS_GRANTED;
                }
            }
        }
        return $result;
    }

Usage Example

Example #1
0
 public function testVoteAccessDenied()
 {
     $user = new UserMock();
     $user->populate("test", "test", [new Role('ROLE_MOCK')], true);
     $voter = new RoleVoter();
     $this->assertSame(RoleVoter::ACCESS_DENIED, $voter->vote($user, [new Role('ROLE_ADMIN')]));
 }