我需要一些建议,基本上我有一个用户可以注册为普通客户的应用程序,并且在仪表板内部有一个选项可以注册为类别列表的作者。客户可以是很多作者。
所以基本上在自定义仪表板中注册/订阅作者之后,他会创建一个他创作的作者的盒子,点击它后会转到带有不同菜单的特定仪表板等。
我唯一的问题是当我开始创建权限时,例如我创建了一个名为“author”的中间件,所以当有人试图访问这些页面时,它必须是作者。
中间件代码:
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');
}
我觉得粘贴这个代码并检查这个作者是否属于用户并不觉得很干净,有没有比在每个页面控制器中粘贴这个代码更好的方法,我试图访问作者的私有区域? / p>
或者即使你们觉得有一种完全不同的做法,我仍然愿意接受它。
答案 0 :(得分:2)
您可以创建另一个中间件并在那里进行检查,类似于您创建的 author 中间件。像这样:
async