如何在cakedc插件cakephp3中为不同的用户组设置不同的auth重定向url

时间:2017-09-05 02:35:07

标签: cakephp-3.x cakedc

我正在使用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中设置的信息中心网址 任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

我可以考虑两个选项:

  • 覆盖EVENT_AFTER_LOGIN(更复杂)
  • 创建仪表板操作,并为每个角色创建2个不同的视图1。然后在仪表板操作中,您可以执行类似

    的操作

    if ($role === ROLE_ADMIN) { $this->render('dashboard_admin'); } else { $this->render('dashboard_user'); }

我认为选项2很容易使用它,您可以将视图中的公共标记提取到元素中并在两者中重复使用。