0

Dans Laravel 5.4, je fais un fournisseur de services personnalisé pour montrer des routes spécifiques. Mon code fonctionne correctement mais je suis confronté à un problème. Le problème est que si l'utilisateur ABC assigner deux voies (menu de) par exempleLes fournisseurs de services Laravel valident les routes

user\list 
user\form 

Maintenant, si l'utilisateur essaie d'appeler ABC autre URL comme user\show_form si l'utilisateur peut accéder à cette ABC routes (menu). Donc, il est possible si l'utilisateur ABC n'a pas les droits d'accès user\show_form et l'utilisateur essaie d'accéder à ces routes (menu), il redirige vers la page 404.

Mon Fournisseur

class UserNavigationServiceProvider extends ServiceProvider { 

    /** 
    * Bootstrap the application services. 
    * 
    * @return void 
    */ 
    public function boot() { 
     $this->getUserNavigation(); 
    } 

    /** 
    * Register the application services. 
    * 
    * @return void 
    */ 
    public function register() { 
     // 
    } 

    /** 
    * getUserNavigation() function use for after user login 
    * fetch the rights 
    * @return void 
    */ 
    private function getUserNavigation() { 
     $user_permission = user_permission(); 
     View::composer('admin.navbar', function($view) use ($user_permission) { 
      $auth_user = Auth::user(); 
      $user_id = $auth_user->id; 
      $user_group = UserPermissionsGroup::select('user_permissions_id') 
        ->where('user_id', $user_id) 
        ->get() 
        ->toArray(); 
      $menu = array(); 
      foreach ($user_group as $k => $v) { 
       foreach($v as $kv) { 
        $menu[$kv] = id_to_text($kv, $user_permission); 
       } 
      } 
      $view->with('menu_list', $menu); 
     }); 
    } 

} 

S'il vous plaît me suggérer comment résoudre.

Répondre

0

Vous pouvez définir une classe de demande personnalisée et, dans sa méthode authorize(), vérifier les autorisations. Ou vous pouvez ajouter un intergiciel pour autoriser la demande et rediriger vers 404 à partir de ce middleware.

Cette question pourrait vous aider. https://laracasts.com/discuss/channels/general-discussion/l5-middleware-or-authorize-method?page=1

+0

comment puis-je mettre 'variable globale $ menu' dans UserNavigationServiceProvider –

+0

Donc' menu' variable globale $ je peux accéder à un contrôleur –

+0

Vous pouvez créer une façade avec une méthode setter et un getter. Définissez sa valeur à partir de UserNavigationServiceProvider et utilisez les méthodes get dans le contrôleur pour obtenir cette valeur. Ou vous pouvez le définir en session. Espérons que cela aide .. – sp11