Generalmente eseguo il mio back-end, con pacchetti come entrust e un modello di avvio casuale adatto alle mie esigenze.
Poi ho messo le mie opinioni in vista/admin ei miei controller in Controller/admin e mettere tutte le rotte di amministrazione in un gruppo con un middleware collegato ad esso
Route::group(['namespace'=>'Admin','prefix'=>'admin','middleware'=>'role','role'=>'admin'],function(){
Route::get('/','[email protected]');
}
e poi nel middleware (questo è usando entrust).
public function handle($request, Closure $next)
{
$user = $this->auth->user();
$route = $request->route();
if($user && $route)
{
$actions = $route->getAction();
if(array_key_exists('role',$actions)) {
$role=$actions['role'];
if(!$user->hasRole($role)) {
Flash::error('Unauthorized Access');
abort(401);
}
}
else
{
Flash::error('Unauthorized Access');
abort(401);
}
}
else
{
Flash::error('Unauthorized Access');
abort(401);
}
return $next($request);
}
Non dimenticare di registrare il middleware nel kernel.php accanto al file di percorsi.
Il middleware potrebbe sembrare complicato ma è semplicemente controlla se hai inserito un ruolo nel tuo gruppo en se poi l'utente attualmente connesso appartiene a quel gruppo.
Ricordo anche che quando si utilizza percorso action()
, è necessario mettere lo spazio dei nomi di amministrazione prima che il nome del controller come action('Admin\[email protected]')
ne dite di farlo nel modo semplice. Puoi creare risorse/viste/admin per tutte le tue visualizzazioni di amministrazione, quindi app \ admin per tutti i modelli di amministrazione, i controller e altri oggetti di amministrazione – Digitlimit
Hai visto questo pacchetto? È per laravel 5: https://github.com/serverfireteam/panel – Digitlimit
@Digitlimit Grazie per la risposta. Ti darò una prova stasera dopo il tuo primo commento. Per il secondo commento: è buono ma ha alcuni problemi nel backend e non è privo di errori, hai altri esempi come questo? – Veerendra