2017-07-26 1 views
0

Disons que j'ai les gardes suivants mis en place et je suis connecté à la fois comme un demandeur d'emploi et un recruteur. Comment puis-je vérifier une capacité d'autorisation pour un utilisateur connecté particulier? La valeur par défaut passera simplement dans l'utilisateur actuellement connecté à la politique, mais lequel?Laravel 5.2 - Vérification des capacités d'autorisation dans une application multi-autorisation

Les gardes:

return [ 


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

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

    ], 


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

] 

La politique:

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

L'action:

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

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

    // Update Post... 
} 

Répondre

0

Peut-être le suivant:

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... 
}