[英]Permissions User and Roles
我需要一些建议,基本上我有一个用户可以注册为普通客户的应用程序,并且在仪表板内可以选择注册为类别列表的作者。 一个客户可以有很多作者。
因此,基本上,在自定义仪表板中注册/订阅了作者后,便会出现一个他创建的作者框,单击该框后,将转到具有不同菜单的特定仪表板,等等。
我唯一的问题是,当我开始创建权限时,例如,我创建了一个名为“作者”的中间件,因此当有人尝试访问这些页面时,它必须是作者。
中间件代码:
public function handle($request, Closure $next)
{
if(isset($request->id) && auth()->check() && count(auth()->user()->authorsProfile) > 0){
return $next($request);
}
return redirect('/dashboard')->with("error","Only Authors Allowed");
}
例:
Route::group(['middleware' => ['auth','author']], function() {
//Dashboard
Route::get('authorsarea/{id}','AuthorController@dashboard')->name('author-dashboard');
});
因此,我需要进行的第二次验证是在控制器内部,我需要根据ID来检查作者ID是否属于客户/用户。
例:
public function dashboard($id)
{
$user = Auth::user();
$user_author = Author::find($id);
if($user_author->user_id != Auth::user()->id){
return back()->with("error","This Author is not you");
}
//Go to dashboard
return view('frontend.author.dashboard');
}
我觉得将这些代码粘贴并检查该作者是否属于用户并不觉得很干净,有没有比总是在每个页面控制器中粘贴此代码(试图访问作者的私有区域)更好的方法呢?
甚至,即使你们觉得做这一切的方式完全不同,我也愿意接受。
您可以制作另一个中间件并在此处进行检查,类似于您创建的作者中间件。 像这样:
public function handle($request, Closure $next)
{
$authorID = $request->route()->parameter('id');
$user_author = Author::find($authorID);
if($user_author->user_id != auth()->user()->id){
return back()->with('error', 'This Author is not you');
}
return $next($request);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.