Martin AJ
Martin AJ

Reputation: 6697

How can I add role in the route?

Here is my current route: (which works as well)

Route::get('/register', ['uses' =>  'registerController@form','as'=>'register','middleware' => 'roles', 'roles' => ['admin'] ]);

Now I want to know, how can I use role when I write the middleware like ->middleware('role') ?


Note: This doesn't work:

Route::get('/register', 'registerController@form')->name('register')->middleware('role')->role(['admin']);

Upvotes: 0

Views: 33

Answers (2)

Exprator
Exprator

Reputation: 27513

Route::get('/register', 'registerController@form')->name('register')->middleware('role:admin');

i guess you wanted this

for multiple

Route::group(['middleware' => ['role:Normal_User,Admin']], function() {
        Route::get('/register', 'registerController@form');
    });

Upvotes: 1

Mike Bovenlander
Mike Bovenlander

Reputation: 5426

Middleware parameters may be specified when defining the route by separating the middleware name and parameters with a :. Multiple parameters should be delimited by commas.

You can make your own middleware:

<?php

namespace App\Http\Middleware;

use Closure;

class CheckRole
{
    /**
     * Handle the incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @param  string  $role
     * @return mixed
     */
    public function handle($request, Closure $next, $role)
    {
        if (! $request->user()->hasRole($role)) {
            // Redirect...
        }

        return $next($request);
    }

}

And call it like this:

Route::get('/register', 'registerController@form')->name('register')->middleware('role:editor');

Source: https://laravel.com/docs/5.4/middleware#middleware-parameters

Upvotes: 1

Related Questions