2017-07-26 90 views
0

假設我設置了以下警衛,並以求職者和招聘人員的身份登錄。我如何檢查特定登錄用戶的授權能力?默認會簡單地將當前登錄用戶傳遞給策略,但是哪一個?Laravel 5.2 - 在多重身份驗證應用程序中檢查授權功能

衛兵:

return [ 


    'guards' => [ 
     'jobseeker' => [ 
      'driver' => 'session', 
      'provider' => 'users', 
     ], 

     'recruiter' => [ 
      'driver' => 'session', 
      'provider' => 'users', 
     ], 

    ], 


    'providers' => [ 
     'users' => [ 
      'driver' => 'eloquent', 
      'model' => App\User::class, 
     ], 
    ], 

] 

政策:

protected $policies = [ 
    Post::class => PostPolicy::class, 
]; 

行動:

public function update($id) 
{ 
    $post = Post::findOrFail($id); 

    if (Gate::denies('update-post', $post)) { 
     abort(403); 
    } 

    // Update Post... 
} 

回答

0

也許下面:

public function update($id) 
{ 

    // get the user to authorize 
    $user = auth()->guard('recruiter')->user(); 

    $post = Post::findOrFail($id); 

    // option one 
    if (Gate::denies('update-post', [$user, $post])) { 
     abort(403); 
    } 

    // option two 
    if (Gate::forUser($user)->denies('update-post', $post)) { 
     abort(403); 
    } 

    // option 3 
    if ($user->cannot('update-post', $post)) { 
     abort(403); 
    } 

    // Update Post... 
} 
相關問題