我发现自己需要在整个网站上重复if else语句,因为我有两个网址。一个用于管理员,一个用于用户。我是否必须将控制器分离出来以阻止这种情况,还是有更好的方法来实现这一目标?
网址结构:
管理员 / buildings / {building_id} /租户
用户: /租户
TenantsController.php
public function index(Request $request, $building_id = null)
{
if($request->user()->hasRole('admin')){
$building_id = $building_id;
}else{
$building_id = Auth::user()->building_id;
}
$building = Building::findOrFail($building_id);
$tenants = User::whereHas('roles', function($q){$q->whereIn('name', ['tenant']);})->where('building_id',$building_id)->paginate(2);
return view('buildings.tenants.index')->withTenants($tenants)->withBuilding($building);
}
答案 0 :(得分:1)
使用中间件,中间件提供了一种方便的机制来过滤进入应用程序的HTTP请求。例如,Laravel包含一个中间件,用于验证应用程序的用户是否经过身份验证。如果用户未经过身份验证,则中间件会将用户重定向到登录屏幕。但是,如果用户通过身份验证,则中间件将允许请求继续进入应用程序。如果您想了解有关中间件的更多信息,请查看此页面documentation