Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

260
Views
Pasar una matriz a un middleware en laravel

Obtuve este identificador en un middleware llamado rolMiddleware:

 public function handle($request, Closure $next, $roles) { //dd($request->user()); foreach ($roles as $rol) { if ($request->user()->getTipoUsuario($request->user()->tipo_usuario_id)->getNombreTipoUsuario() == $rol) { return $next($request); } } abort(403, "¡No hay autorizacion!"); }

Pero $roles es una matriz, aquí está la ruta donde uso el middleware:

 Route::get('/mid', ['middleware' => 'roles:super admin', function () { return "done"; }]);

y el error que me da es:

 ErrorException in RolMiddleware.php line 22: Invalid argument supplied for foreach()

Puede pensar que no necesito una matriz porque solo la estoy usando en superadministrador, para esa ruta solo necesito superadministrador, pero habría rutas que pueden ser para superadministrador y el administrador de un área.

about 4 years ago · Santiago Trujillo
3 answers
Answer question

0

En laravel, puede separar los parámetros que desea pasar al middleware usando comas , de la siguiente manera:

 Route::get('/mid', ['middleware' => 'roles:super,admin', function () { // ^ note this return "done"; }]);

tenga en cuenta que esto no enviará parámetros como una matriz, por lo que no puede recorrer $roles a menos que use los parámetros pasados como parámetros de puntos suspensivos de la siguiente manera:

 public function handle($request, Closure $next, ...$roles)

más bien, deberá usar un solo parámetro para cada función:

 public function handle($request, Closure $next, $role1, $role2) // .... and so on
about 4 years ago · Santiago Trujillo Report

0

Ruta:

 Route::get('/access', ['middleware' => 'hasroles:super,admin', function () { }]);

pasar un parámetro para verificar que el usuario haya creado un permiso en mi causa

 Route::middleware('admin')->namespace('Admin')->prefix('admin')->group(function(){ Route::get('/home', 'MainController@getIndex')->name('admin.index')->middleware("hasrole:create");

Programa intermedio:

1. Uso de parámetros

 public function handle($request, Closure $next, $parm1, $parm2){}

2. Usando var-arg

 public function handle($request, Closure $next, $parm1, $parm2){} public function handle($request, Closure $next, ...$parm1){}

Uso de middleware bidireccional

1: Registrar rutaMiddleware

 // Within App\Http\Kernel Class... protected $routeMiddleware = [ 'hasrole' => \Illuminate\Auth\Middleware\HasRole::class,

Usando:

 Route::get('admin/profile', function () { })->middleware('hasrole');

2: No registrarse en routeMiddleware

Usando:

 use App\Http\Middleware\HasRole; Route::get('admin/profile', function () { // })->middleware(HasRole::class);
about 4 years ago · Santiago Trujillo Report

0

Enviar parámetro como cadena como como

 Route::prefix('panel')->middleware('auth:admin|editor')->group(function (){ Route::get('/', [SiteController::class, 'index'])->name('site.index'); }

Programa en middleware para detectar esta cadena como matriz

 if (in_array(Auth::user()->rule, explode('|', $access))) { return $next($request); } else { return redirect()->route('site.denied'); }
about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!