public function hasAccess(User $user, Resource $resource, $mask) { $resourceRights = $resource->getResourceRights(); $userRoles = $this->tokenStorage->getToken()->getRoles(); $hasAccess = false; foreach ($userRoles as $userRole) { foreach ($resourceRights as $resourceRight) { if ($userRole->getRole() == $resourceRight->getRole()->getName() && $resourceRight->getMask() >= ReservationController::ADMIN) { $hasAccess = true; break; } if ($userRole->getRole() == $resourceRight->getRole()->getName() && $resourceRight->getMask() & $mask) { if (ReservationController::BOOK === $mask && $this->tokenStorage->getToken()->getUser() === $user || ReservationController::BOOK !== $mask) { $hasAccess = true; break; } } } } return $hasAccess; }