如何基于具有CakeDC插件/用户和ACL角色的仪表板

时间:2019-01-05 12:39:27

标签: cakephp cakephp-3.x cakedc

我在CakePhp应用程序中使用CakeDC用户和ACL插件。在我的应用中,我的用户具有不同的角色,并且我希望登录后根据角色具有不同的仪表板。我根据文档here用自己的表和控制器扩展了插件,因此我的MyUsersController和MyUsersTable覆盖了插件的初始文件,UsersController和UsersTable。一切正常。我在包含以下内容的events.php文件中创建一个事件:

BookingSourceDataService

但是似乎覆盖不起作用,因为我遇到了错误:

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];
    }
}
);

在我的URL中,我有/ users / my-users而不是/ my-users,我也不知道为什么。我已经测试了一个模板文件,该文件包含在插件和用户控制器中,如下所示:

 Error: CakeDC/Users.MyUsersController could not be found.

它有效。作为客户端登录后,我的URL重定向是/ profile。 有人可以帮我理解吗?请告诉我它是否还不够清楚,以及是否缺少可能对理解我的问题很重要的代码部分。

我指定我是Cake的初学者:)

谢谢

1 个答案:

答案 0 :(得分:2)

您的自定义控制器不在CakeDC/Users插件中,因此您必须相应地禁用plugin键,以便生成正确的URL(假设您的路由设置正确),像这样连接到您的控制器:

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

例如,这将匹配默认的后备路由,从而生成类似/my-users的URL。

另请参阅: