在 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。
我希望将任何不是主用户的用户重定向到位于 /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。