在用户结霜站点中跳过非主用户的仪表板的正确方法

时间:2017-06-30 23:37:41

标签: userfrosting

我希望任何不是主用户的用户都被重定向到/profiles的单独页面。

我通过编辑admin sprinkle来实现这一点,将这个简单的语句添加到AdminController.php中的pageDashboard函数中:

    if(!$currentUser->isMaster()){
        header("Location: /profiles");
        exit;
    }

我想把它移到我自己的身上,但我不清楚如何最好地做到这一点。我会创建自己的扩展AdminController的控制器,只是替换功能吗?或者有一种更简洁的方式吗?我现在的工作原理,但显然不能面向未来,因为这个文件将在未来的更新中被覆盖。

1 个答案:

答案 0 :(得分:3)

您可以使用determineRedirectOnLogin服务更改用户重定向后的位置。见:https://learn.userfrosting.com/services/default-services#determineredirectonlogin。在您的splashle ServicesProvider中,只需用类似的东西覆盖默认服务:

$container['determineRedirectOnLogin'] = function ($c) {
    return function ($response) use ($c)
    {
        if (!$c->currentUser->isMaster()) {
            return $response->withHeader('UF-Redirect', '/dashboard');
        } else {
            return $response->withHeader('UF-Redirect', '/profiles');            
        }
    };
};

如果您愿意,您可以使用权限系统删除非root用户对仪表板的访问权限。

旁注,就像你指出的那样,你不应该编辑任何核心洒水,并将代码移动到你自己的洒水中。