Как использовать разные инструментальные панели в зависимости от ролей с помощью плагинов / пользователей cakedc и ACL
Я использую плагины CakeDC Users & ACL в своем приложении CakePhp. У меня есть разные роли для моих пользователей в моем приложении, и я хотел бы иметь разную информационную панель, основанную на ролях после входа в систему. Я расширяю плагин своей собственной таблицей и контроллером, основываясь на приведенной здесь документации, поэтому у меня есть MyUsersController и MyUsersTable, которые переопределяют исходные файлы плагина, UsersController и UsersTable. Все отлично работает Я создаю событие в моем файле events.php, который содержит:
use CakeDC\Users\Controller\Component\UsersAuthComponent;
use Cake\Event\Event;
use Cake\Event\EventManager;
EventManager::instance()->on(
UsersAuthComponent::EVENT_AFTER_LOGIN,
['priority' => 99],
function (Event $event) {
if ($event->data['user']['role_id'] === 'bbcb3031-ebed-445e-8507-f9effb2de026') //the id of my client role{
return ['plugin' => 'CakeDC/Users', 'controller' => 'MyUsers', 'action' => 'index', '_full' => true, 'prefix' => false];
}
}
);
Но кажется, что переопределение не работает, потому что у меня есть ошибка:
Error: CakeDC/Users.MyUsersController could not be found.
В моем URL у меня есть /users/my-users вместо / my-users, и я не знаю почему. У меня есть тест с файлом шаблона, который включает в плагин и контроллер пользователей, как это:
function (Event $event) {
if ($event->data['user']['role_id'] === 'bbcb3031-ebed-445e-8507-
f9effb2de026') //the id of role{
return ['plugin' => 'CakeDC/Users', 'controller' => 'Users', 'action' => 'profile';
}
И это работает. Мой URL перенаправляется после входа в систему как клиент / профиль. Может ли кто-нибудь помочь мне понять? Пожалуйста, скажите мне, если это не достаточно ясно, и если отсутствуют части кода, которые могут быть важны для понимания моей проблемы.
Я уточняю, что я новичок в Cake:)
Спасибо
1 ответ
Ваш пользовательский контроллер не живет в CakeDC/Users
плагин, следовательно, вы должны отключить plugin
соответственно, введите правильный URL-адрес (при условии, что ваши маршруты настроены правильно), который подключается к вашему контроллеру, например:
[
'plugin' => null,
'controller' => 'MyUsers',
'action' => 'index',
'_full' => true,
'prefix' => false
]
Это, например, соответствует запасным маршрутам по умолчанию, генерируя URL /my-users
,
Смотрите также: