2016-06-13 10 views
0

Ich bin etwas durch etwas verwirrt. Für die Authentifizierung verwende ich LDAP, genauer gesagt das https://github.com/SaschaDens/ldap-connectorSchutz von Routen mit LDAP

Die LDAP-Bibliothek, die ich verwende, arbeitet im Wesentlichen auf Laravels Authentication Facade.

Alles ist in Ordnung, ich kann mich jetzt ein- und ausloggen mit LDAP. Wenn ich jedoch angemeldet bin, habe ich eine Update-Benutzer-Buttons. Dies verwendet im Wesentlichen LDAP, um alle Gruppen zu erhalten, die ein Benutzer getrennt ist. Also habe ich drei Tabellen,

users 
groups 
users_groups 

Wenn die Schaltfläche gedrückt wird, füge ich alle Benutzer der Tabelle Benutzer hinzu. Ich füge dann alle eindeutigen Gruppen der Gruppentabelle hinzu. Die letzte Tabelle users_groups ist im Wesentlichen eine Pivot-Tabelle, die eine users_id mit einer groups_id verknüpft.

Am Ende davon kann ich sehen, dass ich zum Beispiel getrennt von 3 Gruppen bin, von denen eine die Admin-Gruppe ist. Ich kann auch alle Mitglieder dieser Gruppe sehen durch diese

$group = Group::where('groupName', 'admin')->first(); 
$users = $group->user; 

Jetzt tun gibt es einige Routen ich nur dem Server-Betreiber Benutzern zur Verfügung stellen möchten. Ich kann in Kernel.php sehen, dass es das ist folgende

protected $routeMiddleware = [ 
    'auth' => \App\Http\Middleware\Authenticate::class, 
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 
]; 

Im Moment habe ich nur Auth verwende, um sicherzustellen, dass der Benutzer angemeldet ist. Offensichtlich ich nicht ein Admin ein noch eingerichtet haben, und ich denke, So wie ich es mache, könnte es ein Problem geben, weil ich meine eigene Gruppentabelle erstelle.

Wie würde ich den Zugriff auf eine bestimmte Route nur für Benutzer blockieren, die nicht zur Admin-Gruppe gehören?

Danke

Antwort

1

Sie können dies tun, indem Sie eine neue Route Middleware erstellen.

1) Middleware-Klasse

php artisan make:middleware AdminMiddleware 

2) In Authentifizierungslogik Sie AdminMiddleware Klasse

if(Auth::user()->inGroup('GROUPNAME')) 
{ 
    return $next($request); 
} 
else 
{ 
    return view('auth.login')->withErrors('You are not logged in'); 
} 

3) Fügen Sie die neue Middleware auf Ihrem $ routeMiddleware

'admin' => 'App\Http\Middleware\AdminMiddleware', 

4 erstellen) Fügen Sie den Routen, die Sie schützen möchten, den Middleware-Alias ​​hinzu.

Route::get('admin', [ 
    'as' => 'admin', 
    'middleware' => 'admin', 
    'uses' => '[email protected]' 
]);