public function isGrantedForPublisher()
{
$token = $this->tokenStorage->getToken();
if ($token && method_exists($token, 'getUser')) {
/** @var User $user */
$user = $token->getUser();
} else {
return false;
}
$selectedJournal = $this->journalService->getSelectedJournal();
if ($selectedJournal) {
$publisher = $selectedJournal->getPublisher();
if ($publisher == null) {
return false;
}
} else {
$publisherId = $this->requestStack->getCurrentRequest()->attributes->get('publisherId');
if (!$publisherId) {
return false;
}
$publisher = $this->em->getRepository('OjsJournalBundle:Publisher')->find($publisherId);
}
if ($user->isAdmin()) {
return true;
}
foreach ($publisher->getPublisherManagers() as $manager) {
if ($manager->getUser()->getId() == $user->getId()) {
return true;
}
}
return false;
}