Laravel middleware avec de multiples rôles

J'ai eu quelques problèmes avec Laravel le middleware.
Permettez-moi de vous dire, l'idée de base de ce que je suis en train de réaliser:

Utilisateurs inscrits sur le site de l'un des quatre rôles:

  1. De l'étudiant (par défaut): permet l'accès "indice " et " montrer points de vue
  2. Approbateur: peuvent accéder aux, plusaperçu', 'mise à jour'
  3. Éditeur: peuvent accéder aux, pluscréer', 'modifier " et " magasin'
  4. Admin: pouvez accéder à tout

fyi: "aperçu" est en quelque sorte un indice, mais seulement pour rôle approbateur et plus

Que voulez-vous les gars vous suggérons, c'est la meilleure façon d'aller à ce sujet? C'est ce que j'ai fait jusqu'à présent, mais il ne semble pas fonctionner:


Kernel.php

protected $middlewareGroups = [
...
    'approver+' => [
        \App\Http\Middleware\Approver::class,
        \App\Http\Middleware\Editor::class,
        \App\Http\Middleware\Admin::class,
    ],
];

protected $routeMiddleware = [
...
    'student' => \App\Http\Middleware\Student::class,
    'approver' => \App\Http\Middleware\Approver::class,
    'editor' => \App\Http\Middleware\Editor::class,
    'admin' => \App\Http\Middleware\Admin::class,
];

Http\Middleware\Admin.php

public function handle($request, Closure $next)
{
   if (Auth::check())
   {

        if(Auth::user()->isAdmin())
        {
            return $next($request);
        }
   }

    return redirect('login');
}

L '"Utilisateur" Éloquent modèle:

public function isAdmin()
{
    if($this->role_id === 4)
    { 
        return true; 
    } 
    else 
    { 
        return false; 
    }
}

J'ai fait exactement la même dans l'Approbateur et Éditeur de middleware de fichiers, et dans le isApprover et isEditor fonctions dans le modèle de l'Utilisateur, seulement modifié la valeur cochée dans le if à 2 et 3 respectivement.

Enfin, voici ce que j'ai fait dans mes itinéraires\web fichier:

Route::get('scholen', 'SchoolsController@index');
Route::get('admin/scholen/overzicht', 'SchoolsController@overview')->middleware('approver+');
Route::get('admin/scholen/maken', 'SchoolsController@create')->middleware('approver+');
Route::post('scholen', 'SchoolsController@store')->middleware('approver+');
Route::get('scholen/{id}', 'SchoolsController@show');
Route::get('admin/scholen/{id}/bewerken', 'SchoolsController@edit')->middleware('admin');
Route::patch('admin/scholen/{id}', 'SchoolsController@update')->middleware('admin');
Route::delete('admin/scholen/{id}', 'SchoolsController@destroy')->middleware('admin');

Ce n'est pas exactement sur le point, mais je suis coincé depuis quand je me connecte en tant qu'utilisateur avec Approbateur droits et essayez d'accéder à des écoles de vue d'ensemble, il me redirige vers la page d'accueil.

En général, il se sent juste comme je travaille beaucoup trop chaotique et pas droit à tous, quelqu'un pourrait me donner des conseils sur la façon de le faire de manière plus efficace?

Je vous remercie beaucoup à l'avance!

InformationsquelleAutor Jesse | 2017-05-10