Nano Hash - криптовалюты, майнинг, программирование

Как иметь разные информационные панели на основе ролей с помощью плагинов 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];
    }
}
);

Но похоже, что переопределение не работает, потому что у меня есть ошибка:

Ошибка: CakeDC/Users.MyUsersController не найден.

В моем 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-адрес перенаправляется после входа в качестве клиента /profile. Может ли кто-нибудь помочь мне понять? Пожалуйста, сообщите мне, если это недостаточно ясно и отсутствуют ли части кода, которые могут быть важны для понимания моей проблемы.

Уточняю, что я новичок в Cake.


Ответы:


1

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

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

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

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

05.01.2019
  • Большое спасибо ! Это работает :) Я не очень понял, спасибо за помощь! 05.01.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

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

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..