在 User Frosting 站点中为非主用户跳过仪表板的正确方法

The proper way to skip the dashboard for non-master users in a User Frosting site

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

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

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

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

您可以更改使用 determineRedirectOnLogin 服务登录后用户重定向的位置。参见:https://learn.userfrosting.com/services/default-services#determineredirectonlogin。在你的 sprinkle 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');            
        }
    };
};

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

旁注,正如您所指出的,您不应该编辑任何核心 sprinkle 并将该代码移至您自己的 sprinkle。