AM使用cakephp3和cakedc插件。我有两个用户组,1是普通用户,另一个是超级用户
我基本上要寻找的是为不同的用户设置不同的身份验证,因为两个用户组都有不同的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
中设置的用户仪表板URL任何帮助将不胜感激
我可以考虑2个选项:
- 覆盖event_after_login(更复杂)
-
创建一个仪表板动作,每个角色的2个不同视图1。然后在仪表板动作中,您可以做
之类的事情if ($role === ROLE_ADMIN) { $this->render('dashboard_admin'); } else { $this->render('dashboard_user'); }
我认为选项2足够简单,可以使用它,您可以将视图中的常见标记提取到一个元素中,并将其重复使用。