[英]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.