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?