2017-03-02 2 views
0

Meine Routen sind in zwei Gruppen unterteilt: die Gruppe web (Standard) und die Gruppe admin (benutzerdefiniert). Die admin Gruppe verwendet die auth Middleware. Alles andere verwendet die web Middleware.Laravel 5.4 - Bind AuthServiceProvider an die Route Gruppe?

Ich habe ein Problem, bei dem mein AuthServiceProvider mein Berechtigungsmodell in beiden Gruppen abfragt ... aber ich möchte nur mein Berechtigungsmodell abfragen, wenn ein Benutzer Zugriff auf eine Route innerhalb meiner admin Gruppe anfordert. Hier ist mein AuthServiceProvider:

<?php 

namespace App\Providers; 

use App\Models\Permission; 
use Illuminate\Support\Facades\Gate; 
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; 

class AuthServiceProvider extends ServiceProvider 
{ 
/** 
* The policy mappings for the application. 
* 
* @var array 
*/ 
protected $policies = [ 
    'App\Model' => 'App\Policies\ModelPolicy' 
]; 

/** 
* Register any authentication/authorization services. 
* 
* @return void 
*/ 
public function boot() 
{ 
    $this->registerPolicies(); 

    Gate::before(function($user){ 
     if($user->isAdmin()){ 
      return true; 
     } 
    }); 

    foreach ($this->getPermissions() as $permission) { 
     Gate::define($permission->name, function ($user) use ($permission) { 
      return $user->hasRole($permission->roles); 
     }); 
    } 
} 

protected function getPermissions() 
{ 
    return Permission::with('roles')->get(); 
} 

So in jeder Anfrage innerhalb meiner web Middleware, meine App abfragt Berechtigungen für einen Benutzer, wenn es brauchen tut. Es gibt keine benötigen für alle Berechtigungen in meiner Web-Middleware abgefragt werden. Wie kann ich meinem AuthServiceProvider mitteilen, dass er Berechtigungen nur für Routen innerhalb meiner Auth Gruppe (oder Middleware) prüfen soll?

Antwort

0

answer is here

Ich wechselte nur einen Service-Provider verwenden, meine eigene benutzerdefinierte Middleware

zu verwenden
Verwandte Themen