如何在Cakedc插件CakePhp3中为不同用户组设置不同的auth重定向URL



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足够简单,可以使用它,您可以将视图中的常见标记提取到一个元素中,并将其重复使用。

最新更新