Как проверить, есть ли у пользователя разрешение на редактирование контента с помощью публичного API eZ Platform в PHP?
Платформа eZ - это полнофункциональная система управления контентом (CMS) на базе Symfony. Он добавляет хранилище контента и другие функции, которые позволяют пользователям создавать контент. Это контролируется сложной системой разрешений, которая позволяет осуществлять детальный контроль.
Обычно эти разрешения предоставляются через пользовательский интерфейс, так что пользователи могут выполнять определенные функции или нет. Но как мне добиться этого в моем пользовательском коде, в контроллерах или консольных командах?
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();
}
Это естественно относится к любым командам и функциям в хранилище. Например, модуль контента имеет такие функции, как создание, редактирование и удаление.