Как проверить, есть ли у пользователя разрешение на редактирование контента с помощью публичного API платформы eZ в PHP?

eZ Platform – это полнофункциональная система управления контентом (CMS) на базе Symfony. Он добавляет репозиторий контента и другие функции, которые позволяют пользователям создавать контент. Это контролируется сложной системой разрешений, которая обеспечивает детальный контроль.

Обычно эти разрешения предоставляются через пользовательский интерфейс, так что пользователи могут либо выполнять определенные функции, либо нет. Но как мне добиться этого в моем пользовательском коде, в контроллерах или консольных командах?


person Velmu    schedule 13.07.2017    source источник


Ответы (1)


Разработчики используют стандартные сервисы для взаимодействия с репозиторием. В CookBookBundle есть много хороших примеров этого. Одна вещь, которая не рассматривается в примерах в комплекте, — это то, как проверить, есть ли у пользователя разрешение на выполнение определенной функции.

Вы можете легко сделать это, используя PermissionResolver из репозитория, например:

$content = $contentService->loadContent(52);
$canEdit = $permissionResolver->canUser('content','edit',$content);

if($canEdit){
   echo "Logged in user can edit object " . $content->getName();
} else {
   echo "Logged in user can't edit object " . $content->getName();
}

Это, естественно, относится к любым командам и функциям в репозитории. Например, модуль контента имеет такие функции, как создание, редактирование и удаление.

person Velmu    schedule 13.07.2017
comment
Фантастическая точка! - person Amir Koklan; 10.08.2017