наконец я делаю это, думаю, все в порядке.какие-нибудь лучшие решения?
public function permissions()
{
$user_permissions = [];
foreach ($this->roles as $role){
foreach ($role->permissions as $permission)
{
array_push($user_permissions , $permission->permission);
}
}
$user_permissions = array_unique($user_permissions);
return $user_permissions;
}
Это промежуточное ПО, которое я использую для проверки уровня доступа пользователя.
public function handle($request, Closure $next , $param)
{
$user_permissions = Auth::user()->permissions();
if (in_array($param , $user_permissions))
return $next($request);
return abort(403);
}
теперь определяйте промежуточное ПО как AccessLevel
промежуточное ПО, используйте его везде, например, маршрутыи отправьте параметр следующим образом.Route::post('create_new_profile', 'AdminProfileController@create', ['middleware' => 'AccessLevel:create_new_profile']);