2016-12-20 8 views
0

は、私がデータテーブル内のレコードのリストを表示します。今私はそれに委託を統合する必要があります。ユーザーが管理者の場合、すべてのリードを見ることができます。ただし、ユーザーが通常のユーザーの場合、そのユーザーに属するレコードのみが表示されます。LaravelのDataTableのクエリとエントラスト

私はこれにアプローチする方法がわかりませんが、私はこの文をif文でロールをチェックしているのでしょうか、それとも良い方法がありますか?

public function query() 
    { 
     $leads = Lead::query() 
      ->select([ 
       'leads.id as id', 
       'leads.parent_id as parent_id', 
       'statuses.name as status', 
       'leads.title as title', 
       'leads.first_name as first_name', 
       'leads.last_name as last_name', 
       'leads.opt_in as opt_in', 
       'leads.created_at as created_at', 
       'leads.user_id as user_id', 
      ]) 
      ->leftJoin('statuses', 'leads.status_id', '=', 'statuses.id'); 

     return $this->applyScopes($leads); 
    } 

答えて

0

Laravelにはポリシーがあるため、私はEntrustを使用しません。しかし、あなたの問題で、私は、エントラストはあなたがした後、ユーザーにそれを適用し、パーミッションを作成し、それが持っているかもしれ

php artisan entrust:migration 

runコマンドで作成した権限を作成し、DBに保存する必要があります方法

Auth::user()->can('permission-name'); 

を持っていることを見ました私は助けることができるhttps://github.com/Zizaco/entrust 希望:許可と一般ユーザ許可

管理でより多くをお読みください。 Entrustを使うことができれば、Laravelのポリシーについて研究してみましょう。それはとても良いことです。ポリシーについて詳しくはhttps://mattstauffer.co/blog/acl-access-control-list-authorization-in-laravel-5-1#policies