2016-12-17 1 views
1

Je développe une application web avec laravel 5.2. Ce dont j'ai besoin, c'est d'avoir un compte qui se distingue par son rôle. et je dois rôle qui peut accéder à 1 route, mais l'autre rôle ne peut pas accéder. J'ai la navigation et j'ai fait tout ce que j'ai trouvé commeLaravel midleware multiple pour une route

Route::group(['prefix' => '/', 'middleware' => ['role:user_a','role:user_b']], function(){someroute} 

Route::group(['prefix' => '/', 'middleware' => ['role:user_a|role:user_b']], function(){someroute} 

Route::group(['prefix' => '/', 'middleware' => ['role:user_a,role:user_b']], function(){someroute} 

ne fonctionne pas. Je ne sais pas comment rendre mon itinéraire unique peut être consulté par 2 rôle, mais désactiver pour l'autre rôle

Répondre

0

Je pense que vous ne pouvez pas faire cela, mais vous pouvez utiliser de cette façon.

Route::group(['prefix'=>'/', 'middleware' =>['role:user_a','role:user_b']],function(){ 

     Route::group(['prefix'=>'userAorB', 'middleware' =>['role:user_a|role:user_b']],function(){ Routes }); 
     Route::group(['prefix'=>'userAANDB', 'middleware' =>['role:user_a,role:user_b']],function(){ Routes }); 

}) 
+0

je reçois ErrorException dans la ligne 579 de Router.php: trim() s'attend à ce que le paramètre 1 soit une chaîne, le tableau donné – Frasaccordi

+0

est-ce que cette route d'utilisation possible est? pas de groupe de route? – Frasaccordi

+0

@Frasaccordi c'était mon erreur éditée. –

0

Vous pouvez créer un middleware nommé role, en savoir plus sur le middleware dans docs here

La méthode handle de middleware sera comme:

public function handle($request, Closure $next) 
{ 
    if (auth()->user()->role('b')) { 
     return redirect('home'); 
    } 
    // else users of other roles can visit the page 
    return $next($request); 
} 

Ensuite, vous pouvez l'utiliser dans votre itinéraire classer comme:

Route::group(['middleware' => 'role'], function() { 
    // someroute 
});