Browse Source

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
main
TheSilva7 1 week ago
parent
commit
1ef5077c78
  1. 6
      app/Http/Controllers/usuariosController.php
  2. 1
      app/Http/Kernel.php
  3. 19
      app/Http/Middleware/CheckServiciosRole.php
  4. 1
      database/seeders/DatabaseSeeder.php
  5. 24
      database/seeders/ServiciosSeeder.php
  6. 2
      resources/views/layouts/dashboard.blade.php
  7. 3
      routes/web.php

6
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.');

1
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,
];
}

19
app/Http/Middleware/CheckServiciosRole.php

@ -0,0 +1,19 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class CheckServiciosRole
{
public function handle(Request $request, Closure $next): Response
{
if (!auth()->check() || auth()->user()->rol !== 'servicios') {
return redirect('/')->with('error', 'No tienes permisos de servicios para acceder a esta sección.');
}
return $next($request);
}
}

1
database/seeders/DatabaseSeeder.php

@ -21,6 +21,7 @@ class DatabaseSeeder extends Seeder
$this->call([
ProfesorSeeder::class,
ServiciosSeeder::class,
]);
}
}

24
database/seeders/ServiciosSeeder.php

@ -0,0 +1,24 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
class ServiciosSeeder extends Seeder
{
public function run(): void
{
User::updateOrCreate(
[ 'email' => 'jorge@jorge.com' ],
[
'name' => 'Jorge',
'apellido' => 'Servicios',
'telefono' => '1234567890',
'password' => Hash::make('servicios123'),
'rol' => 'servicios',
]
);
}
}

2
resources/views/layouts/dashboard.blade.php

@ -73,7 +73,7 @@
class="pl-4 mt-2 space-y-1 text-sm">
<li>
<a href="{{ route('prestamos.index') }}" class="nav-item-hover flex items-center space-x-3 px-4 py-3 rounded-lg hover:bg-white/10 backdrop-blur-sm {{ request()->is('tiposLicencias*') ? 'bg-white/20' : '' }}">
<a href="{{ route('prestamos.index') }}" class="nav-item-hover flex items-center space-x-3 px-4 py-3 rounded-lg hover:bg-white/10 backdrop-blur-sm">
<i class="fas fa-plus text-white/80"></i>
<span class="font-light">Nuevo Préstamo</span>
</a>

3
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);

Loading…
Cancel
Save