Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

365
Visualizações
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.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

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
over 4 years ago · Santiago Trujillo Relatório

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,

Utilizando:

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

2: No registrarse en routeMiddleware

Utilizando:

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

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'); }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda