Reputation: 6697
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
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
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