2017-02-14 3 views
0

hinzuzufügen habe ich eine Strecke Gruppe in Laravel die authWie kundenspezifische Middleware innerhalb einer Strecke Gruppe in Laravel

Route::group(['middleware'=>'auth', function() 
{ 
    //Routes 
}); 

Jetzt Middleware diese Routen sind in nur Nutzern zur Verfügung angemeldet hat. Ich habe eine Situation, in der angemeldete Benutzer Privilegien haben. Ich habe einige Routen, die nur von angemeldeten Benutzern besucht werden UND wenn sie Privileg von OWNER

haben

In Funktion habe ich eine Sitzung und gespeicherte Privileg Wert gestartet.

Ich habe so etwas wie dieses ist

Route::group(['middleware'=>'auth', function() 
{ 
    //Routes 
    if(session::get('privilege') 
    { 
     //Routes 
    } 
}); 

Dies funktioniert nicht, es ist weder geeignete Methode. Kann mir jemand sagen, wie Middleware in einer Middleware hinzugefügt wird?

+1

Sie können Ihre eigene Middleware dafür erstellen und sie auch mit auth verwenden. – Kumar

Antwort

1

Sie benötigen eine eigene Middleware OWNER

php artisan make:middleware Owner 

schaffen eine Middleware-Datei für Sie aufgerufen zu erstellen. Dann in der public functionhandle genannt u kann wie etwas tun

if (Auth::user()->privilege == "OWNER") { 
     return $next($request); 
    } 

return redirect('home'); 

So am Ende Ihrer benutzerdefinierten Middleware etwas wie folgt aussehen:

<?php 

namespace App\Http\Middleware; 

use Closure; 

class Owner 
{ 
/** 
* Handle an incoming request. 
* 
* @param \Illuminate\Http\Request $request 
* @param \Closure $next 
* @return mixed 
*/ 
public function handle($request, Closure $next) 
{ 
    if (Auth::user()->privilege == "OWNER") { 
     return $next($request); 
    } 

    return redirect('home'); 

} 

}

More about Laravel Middelware here

+0

Und verwende es wie 'Route :: get() -> Middleware ('Besitzer');' richtig? – Alen

+0

Jup, das ist richtig! –

1

Es Es sollte keine Logik innerhalb Ihrer Routendatei (en) geben - diese sollten einfach Routen definieren Und sonst nichts. Was Sie tun sollten, ist Middleware definieren, welche Berechtigungen/Rollen Ihre Benutzer überprüft hat, können Sie Parameter angeben, die an die Middleware wie folgt geführt werden:

Route::group(['middleware' => 'auth', function() { 

    Route::get('/my-route', '[email protected]')->middleware('role:some_role'); 

    Route::get('/my-other-route', '[email protected]')->middleware('role:some_other_role'); 

}); 

Dann in Ihrer Middleware, können Sie diese Parameter über ein drittes Argument zugreifen in der handle Methode. Mit diesem Wert können Sie die privilegierte/Rolle überprüfen muss der Benutzer und dann entscheiden, ob der Benutzer diese Route zugreifen sollte:

public function handle($request, Closure $next, $role) 
{ 
    // Do something with $role 

    return $next($request); 
} 

Wenn Sie nicht sicher sind, über Ihre eigene Middleware definieren, prüfen Sie die Dokumentationen hier: https://laravel.com/docs/middleware

Verwandte Themen