2017-09-03 26 views
0

ユーザーが認証された後にグローバル変数を設定したい場合 - permissionsと呼ぶことができます。この変数は、コントローラとビューで使用できる必要があります。Laravelでのユーザー権限付与後のグローバル権限変数の作成

これを達成する最も良い方法は何ですか?現在、各方法でデータベースのクエリを実行し、最適ではないユーザーの役割を確認する必要があります。

私はview::shareメソッドをappserviceproviderで宣言して、ビューに変数を渡すことができますが、ユーザーが認証された後に起動メソッドが実行されることはわかっています。

更新

私はコントローラーから延びBaseControllerを作成しました。

BaseController:

class BaseController extends Controller { 

    public $permissions; 

    public function __construct() { 
     $this->permissions = GroupRoles::where('id', Auth::user()->id)->first(); 
    } 

} 

は、その後、私はBaseControllerから延びてUserControllerでの権限変数にアクセスしようとしています。非オブジェクトのアクセスを取得しようとする。 BaseControllerコンストラクタはミドルウェアの前に構築されているからだと思います。

class UserController extends BaseController { 

    public function showPermissions() { 
    return var_dump($this->permissions); 
    } 

} 

最終溶液

礎石はBaseControllerで$this->middleware(function ($request, $next)を使用することでした。

答えて

0

それから、あなたのコントローラを拡張し、BaseControllerにあなたは、あなたがこの$this->permissions

+0

などのすべてのコントローラからアクセスすることができ、この

public $permissions; public function __construct() { $permissions = Permissions::all() //For example $this->permissions = $permissions } 

のように行うことができ、コントローラの中でそれを試してみたり、独自のBaseControllerを作成BaseControllerとコンストラクタを作成しました。しかし、私はまだUserControllerからアクセス許可変数にアクセスすることはできません。私はそれ以上のことをするべきだと思う。なぜなら、 '非オブジェクトのプロパティを取得しようとしています 'というエラーが出ているからです。したがって、問題は引き続き認証に関連しています。 –

+0

あなたはパッケージからpermissionを設定しようとしていますか?ユーザーコントローラーはBaseControllerを拡張して取得する必要があります。または、まずコンストラクタでvarをダンプして、必要なデータがそこにあることを確認してください。 –

+0

UserControllerはBaseControllerを拡張します。 BaseControllerはコントローラを拡張します。 Authメソッドがロードされる前に構築メソッドが呼び出されるか、呼び出す方法がわからないため、このエラーが発生します。 '$ this-> permissions = GroupRoles ::( 'id'、Auth :: user() - > id) - > first();' –

関連する問題