Как использовать разные инструментальные панели в зависимости от ролей с помощью плагинов / пользователей cakedc и ACL - PullRequest
0 голосов
/ 05 января 2019

Я использую плагины 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 Ответ

0 голосов
/ 05 января 2019

Ваш пользовательский контроллер не находится в плагине CakeDC/Users, поэтому вы должны соответствующим образом отключить ключ plugin, чтобы генерировался правильный URL-адрес (при условии, что ваши маршруты настроены правильно), который подключается к вашему контроллеру , вот так:

[
    'plugin' => null,
    'controller' => 'MyUsers',
    'action' => 'index',
    '_full' => true,
    'prefix' => false
]

Это, например, соответствует запасным маршрутам по умолчанию, генерируя URL-адрес типа /my-users.

Смотри также:

...