My problem is that when I want to access a route I get an error 403 (access is not allowed), I have to remove it from the middleware route that groups all the models of my Database, to control roles and permissions what each user of the system should have that I develop (as I show below)
web.php
<?php
// ACCESO
Route::get('/', 'AccesoController@index');
Route::post('/login', 'AccesoController@login')->name('login');
Route::get('/logout', 'AccesoController@logout')->name('logout');
Route::get('/archivo/archivos_palabra/{idModulo}', 'ArchivoController@index')->name('archivo');
// MODULOS
Route::group(['middleware' => ['verifica_session', 'verifica_permiso']], function () {
// archivo
Route::post('/archivo/form', 'ArchivoController@form')->name('archivo.form');
Route::post('/archivo/save', 'ArchivoController@save')->name('archivo.save');
Route::post('/archivo/delete', 'ArchivoController@delete')->name('archivo.delete');
});
the installation in the Kernel.php
'verifica_session' => \App\Http\Middleware\verificaSessionMiddleware::class,
'verifica_permiso' => \App\Http\Middleware\verificaPermisoMiddleware::class,
verificaPermisoMiddleware.php
<?php
namespace App\Http\Middleware;
use Closure;
use Session;
class verificaPermisoMiddleware {
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next) {
$recurso = substr($request->getPathInfo(), 1);
$tienePermiso = ($recurso == 'principal' || $recurso == 'perfil');
if(!$tienePermiso) {
foreach (session('recursos') as $objetoRecurso) {
if(starts_with($recurso, $objetoRecurso->nombreRecurso)) {
if($objetoRecurso->esMenu) {
Session::put('menu-item', ('menu-item-' . $objetoRecurso->nombreRecurso));
}
$tienePermiso = true;
break;
}
}
}
if($tienePermiso) {
return $next($request);
} else {
abort(403);
}
}
}
verificaSessionMiddleware.php
<?php
namespace App\Http\Middleware;
use Closure;
class verificaSessionMiddleware {
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next) {
if(session('username')) {
return $next($request);
} else {
return redirect('/');
}
}
}
I must inform you that I have other routes that are working correctly in the route of the middleware that are running correctly, how could I solve it please?
</div>