: - "" (ACL). , ; . , 'as', . :
Route::get('/', ['as'=>'clients.create', 'uses'=>'ClientsController@create']);
'clients.create' ACL. : ACL - 'as', ( ).
, , . , . , ACL .
1) App\Http\Middleware\Acl\CheckPermission $permission = null 'as', routes.php. :
<?php namespace App\Http\Middleware;
use Closure;
class CheckPermission
{
public function handle($request, Closure $next)
{
$action = $request->route()->getAction();
$permission = isset($action['as']) ? $action['as'] : '';
if (!app('Illuminate\Contracts\Auth\Guard')->guest()) {
if ($request->user()->can($permission)) {
return $next($request);
}
}
return $request->ajax ? response('Unauthorized.', 401) : redirect('/login');
}
}
2) . , 'as', . : a) b) . 2a 2b, ACL .
2a) . : 'as'=>'clients.*' 'middleware' => 'acl'. , , (, 'middleware' => 'acl:manage_user'). , handle() . URI .
Route::group(['middleware' => 'acl'], function()
{
Route::get('/clients', ['as'=>'clients.view', 'uses'=>'ClientsController@index']);
Route::get('/clients/new', ['as'=>'clients.create', 'uses'=>'ClientsController@create']);
}
2b) , . /app/Http/Kernel.php $routeMiddleware. 2 , . : '\App\Http\Middleware\CheckPermission' $middleware, . $routeMiddleware , .
3) 'as' permissions permission_slug. SQL, id 123 clients.create. , 'client.create'.
INSERT INTO permissions ('permission_title', 'permission_slug', 'permission_description')
VALUES ('Create a Client', 'clients.create', 'Allow the user to create a client');
INSERT INTO roles ('role_title', 'role_slug')
VALUES ('Client Admin', 'clients.admin');
id . , , id=1. : id=1 id=1.
INSERT INTO permission_role ('permission_id', 'role_id') VALUES (1, 1);
, id=1, - 123. id=1 id=123.
INSERT INTO role_user ('role_id', 'user_id') VALUES (1, 123);
id=123, Client Admin. Client Admin 'clients.create'. id=123, , 'clients.create', (example.com/clients/new ). , ( , , , ).