我正在使用cakephp3和cakedc插件。我有两个用户组,1个是普通用户,另一个是超级用户
我基本上寻找的是为不同的用户设置不同的auth url,因为两个用户组都有不同的dashbaord。
我试图挂钩UsersAuthComponent::EVENT_AFTER_LOGIN
。这是我在eventListener
$helper = new AppView();
$adminDashBoard = $helper->Url->build([
'prefix' => 'admin',
'controller' =>'users',
'action' => 'dashboard',
'plugin' => null
]);
$customerDashBoard = $helper->Url->build([
'prefix' => 'customer',
'controller' =>'customers',
'action' => 'dashboard',
'plugin' => null
]);
$result = array();
if($entity['is_superuser'] == 1)
$result[] = $adminDashBoard;
else
$result[] = $customerDashBoard;
return $result;
我必须创建AppView的对象,因为EventLister
中没有Url构建器。上面的代码工作正常,但我在结果对象中附加的url被附加到当前URL中,它变得像
domain.com/<user's dashboard url in urlencoded format>
但我希望它重定向到用户在eventListner
中设置的信息中心网址
任何帮助将不胜感激
答案 0 :(得分:0)
我可以考虑两个选项:
创建仪表板操作,并为每个角色创建2个不同的视图1。然后在仪表板操作中,您可以执行类似
的操作 if ($role === ROLE_ADMIN) {
$this->render('dashboard_admin');
} else {
$this->render('dashboard_user');
}
我认为选项2很容易使用它,您可以将视图中的公共标记提取到元素中并在两者中重复使用。