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">