From 1ef5077c78b921c0f2ac22ceb7398df2d8ba2485 Mon Sep 17 00:00:00 2001 From: TheSilva7 Date: Tue, 20 May 2025 22:41:28 -0600 Subject: [PATCH] Rol de Servicios Usando el correo de jorge se accede al dashboard de administrador pero con ciertas limitaciones para que solo se pueda usar las funciones que son exclusivas de servicios --- app/Http/Controllers/usuariosController.php | 6 ++++++ app/Http/Kernel.php | 1 + app/Http/Middleware/CheckServiciosRole.php | 19 ++++++++++++++++ database/seeders/DatabaseSeeder.php | 1 + database/seeders/ServiciosSeeder.php | 24 +++++++++++++++++++++ resources/views/layouts/dashboard.blade.php | 2 +- routes/web.php | 3 +++ 7 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 app/Http/Middleware/CheckServiciosRole.php create mode 100644 database/seeders/ServiciosSeeder.php diff --git a/app/Http/Controllers/usuariosController.php b/app/Http/Controllers/usuariosController.php index c521450..78b64b7 100644 --- a/app/Http/Controllers/usuariosController.php +++ b/app/Http/Controllers/usuariosController.php @@ -80,6 +80,12 @@ class usuariosController extends Controller $usuario->departamento_id = $request->departamento_id; $usuario->telefono = $request->telefono; $usuario->password = bcrypt($request->password); + // Asignar rol si viene en la petición y el usuario autenticado es admin o servicios + if (auth()->user()->rol === 'admin' && $request->has('rol')) { + $usuario->rol = $request->rol; + } elseif (auth()->user()->rol === 'servicios') { + $usuario->rol = 'usuario'; // Solo puede crear usuarios normales + } $usuario->save(); return redirect()->route('usuarios')->with('success', 'Usuario creado exitosamente.'); diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 993626b..81a033f 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -66,5 +66,6 @@ class Kernel extends HttpKernel 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, 'profesor' => \App\Http\Middleware\CheckProfesorRole::class, 'admin' => \App\Http\Middleware\CheckAdminRole::class, + 'servicios' => \App\Http\Middleware\CheckServiciosRole::class, ]; } diff --git a/app/Http/Middleware/CheckServiciosRole.php b/app/Http/Middleware/CheckServiciosRole.php new file mode 100644 index 0000000..87757aa --- /dev/null +++ b/app/Http/Middleware/CheckServiciosRole.php @@ -0,0 +1,19 @@ +check() || auth()->user()->rol !== 'servicios') { + return redirect('/')->with('error', 'No tienes permisos de servicios para acceder a esta sección.'); + } + + return $next($request); + } +} diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 764c0ff..7688ecf 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -21,6 +21,7 @@ class DatabaseSeeder extends Seeder $this->call([ ProfesorSeeder::class, + ServiciosSeeder::class, ]); } } diff --git a/database/seeders/ServiciosSeeder.php b/database/seeders/ServiciosSeeder.php new file mode 100644 index 0000000..5e37876 --- /dev/null +++ b/database/seeders/ServiciosSeeder.php @@ -0,0 +1,24 @@ + 'jorge@jorge.com' ], + [ + 'name' => 'Jorge', + 'apellido' => 'Servicios', + 'telefono' => '1234567890', + 'password' => Hash::make('servicios123'), + 'rol' => 'servicios', + ] + ); + } +} diff --git a/resources/views/layouts/dashboard.blade.php b/resources/views/layouts/dashboard.blade.php index 36a44bc..80dc624 100644 --- a/resources/views/layouts/dashboard.blade.php +++ b/resources/views/layouts/dashboard.blade.php @@ -73,7 +73,7 @@ class="pl-4 mt-2 space-y-1 text-sm">
  • - + Nuevo Préstamo diff --git a/routes/web.php b/routes/web.php index 7aa3297..c645793 100644 --- a/routes/web.php +++ b/routes/web.php @@ -112,3 +112,6 @@ Route::get('/user-dashboard', [App\Http\Controllers\UserDashboardController::cla Route::get('/user-dashboard/cuestionario', function () { return view('user-dashboard.cuestionario'); })->middleware('auth'); + +// Rutas protegidas para el rol servicios +Route::middleware(['auth', 'servicios'])->resource('prestamos', PrestamoController::class);