diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index bf2a9c6..ca22f7d 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -40,10 +40,10 @@ class LoginController extends Controller protected function authenticated($request, $user) { - if ($user->tipos_id == 1) { + if ($user->tipos_id == 1) { // Administrador + return redirect('/dashboard'); + } elseif ($user->tipos_id == 4) { // Servicios Generales return redirect('/dashboard'); - } elseif ($user->tipos_id == 2) { - return redirect('/user-dashboard'); } else { return redirect('/home'); } diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index 190b646..cb083ed 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -25,12 +25,12 @@ class HomeController extends Controller { $user = auth()->user(); - // Validar que el usuario tenga tipo asignado y que sea Administrador - if (!$user->tipo || $user->tipo->nombre !== 'Administrador') { + // Validar que el usuario tenga tipo asignado y que sea Administrador o Servicios Generales + if (!$user->tipo || !in_array($user->tipos_id, [1, 4])) { // Cerrar la sesión del usuario auth()->logout(); // Redirigir con mensaje de error - return redirect()->route('login')->with('error', 'No tienes permisos para acceder al sistema. Solo los administradores pueden acceder en este momento.'); + return redirect()->route('login')->with('error', 'No tienes permisos para acceder al sistema. Solo los administradores o servicios pueden acceder en este momento.'); } // Notificaciones si el usuario no tiene puesto o departamento asignado diff --git a/app/Http/Controllers/usuariosController.php b/app/Http/Controllers/usuariosController.php index fd3ccfd..0141517 100644 --- a/app/Http/Controllers/usuariosController.php +++ b/app/Http/Controllers/usuariosController.php @@ -96,6 +96,11 @@ class usuariosController extends Controller 'password.confirmed' => 'Las contraseñas no coinciden.', ]); + // Validación extra: si el usuario autenticado es de servicios generales, solo puede crear usuarios de tipo Usuario + if (auth()->user()->tipos_id == 4 && $request->tipos_id != 2) { + return redirect()->back()->withInput()->withErrors(['tipos_id' => 'Solo puedes crear usuarios de tipo Usuario.']); + } + // Si la validación pasa, crea el usuario $usuario = new User(); $usuario->name = $request->name; @@ -106,12 +111,7 @@ 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 - } + // Ya no asignamos rol, solo usamos tipos_id $usuario->save(); return redirect()->route('usuarios')->with('success', 'Usuario creado exitosamente.'); diff --git a/app/Http/Middleware/CheckServiciosRole.php b/app/Http/Middleware/CheckServiciosRole.php index 87757aa..ca349b9 100644 --- a/app/Http/Middleware/CheckServiciosRole.php +++ b/app/Http/Middleware/CheckServiciosRole.php @@ -10,7 +10,7 @@ class CheckServiciosRole { public function handle(Request $request, Closure $next): Response { - if (!auth()->check() || auth()->user()->rol !== 'servicios') { + if (!auth()->check() || auth()->user()->tipos_id !== 4) { return redirect('/')->with('error', 'No tienes permisos de servicios para acceder a esta sección.'); } diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index eaca45b..2744046 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -21,11 +21,11 @@ class AuthServiceProvider extends ServiceProvider * Register any authentication / authorization services. */ public function boot(): void -{ - $this->registerPolicies(); + { + $this->registerPolicies(); - Gate::define('gestionar-prestamos', function ($user) { - return in_array($user->rol, ['admin', 'servicios']); - }); -} + Gate::define('gestionar-prestamos', function ($user) { + return in_array($user->tipos_id, [1, 4]); // 1 para admin, 4 para servicios + }); + } } diff --git a/database/seeders/ServiciosSeeder.php b/database/seeders/ServiciosSeeder.php index 5e37876..8860b87 100644 --- a/database/seeders/ServiciosSeeder.php +++ b/database/seeders/ServiciosSeeder.php @@ -17,7 +17,9 @@ class ServiciosSeeder extends Seeder 'apellido' => 'Servicios', 'telefono' => '1234567890', 'password' => Hash::make('servicios123'), - 'rol' => 'servicios', + 'tipos_id' => 4, + 'puesto_id' => 1, + 'departamento_id' => 1 ] ); } diff --git a/resources/views/usuariosCrearEditar.blade.php b/resources/views/usuariosCrearEditar.blade.php index d091c36..6edfac6 100644 --- a/resources/views/usuariosCrearEditar.blade.php +++ b/resources/views/usuariosCrearEditar.blade.php @@ -78,12 +78,23 @@