簡體   English   中英

權限用戶和角色

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM