Refactor: Permisos y roles, creacion de permisos y roles

This commit is contained in:
Juan Felipe Zapata Moreno 2026-02-11 13:07:59 -06:00
parent 07ab94e83d
commit cba5571eb9
4 changed files with 1264 additions and 905 deletions

View File

@ -14,9 +14,9 @@
/**
* Roles del sistema
*
*
* @author Moisés Cortés C. <moises.cortes@notsoweb.com>
*
*
* @version 1.0.0
*/
class RoleController extends Controller
@ -26,7 +26,7 @@ class RoleController extends Controller
*/
public function index()
{
$model = Role::orderBy('description');
$model = Role::orderBy('description')->where('description', '!=', 'desarrollador');
QuerySupport::queryByKey($model, request(), 'name');

View File

@ -15,11 +15,11 @@
/**
* Controlador de usuarios
*
*
* Permite la administración de los usuarios en general.
*
*
* @author Moisés Cortés C <moises.cortes@notsoweb.com>
*
*
* @version 1.0.0
*/
class UserController extends Controller
@ -29,7 +29,7 @@ class UserController extends Controller
*/
public function index()
{
$users = User::orderBy('name');
$users = User::orderBy('id', 'DESC')->where('id', '!=', 1);
QuerySupport::queryByKeys($users, ['name', 'email']);
@ -152,7 +152,7 @@ public function activity(UserActivityRequest $request, User $user)
}
return ApiResponse::OK->response([
'models' =>
'models' =>
$model->orderBy('created_at', 'desc')
->paginate(config('app.pagination'))
]);

2060
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -11,9 +11,9 @@
/**
* Roles y permisos
*
*
* @author Moisés Cortés C. <moises.cortes@notsoweb.com>
*
*
* @version 1.0.0
*/
class RoleSeeder extends Seeder
@ -25,7 +25,7 @@ class RoleSeeder extends Seeder
*/
public function run(): void
{
$users = PermissionType::create([
$users = PermissionType::firstOrCreate([
'name' => 'Usuarios'
]);
@ -39,7 +39,7 @@ public function run(): void
$userSettings = $this->onPermission('users.settings', 'Configuración de usuarios', $users, 'api');
$userOnline = $this->onPermission('users.online', 'Usuarios en linea', $users, 'api');
$roles = PermissionType::create([
$roles = PermissionType::firstOrCreate([
'name' => 'Roles'
]);
@ -50,35 +50,48 @@ public function run(): void
$roleDestroy
] = $this->onCRUD('roles', $roles, 'api');
$pulse = PermissionType::create([
'name' => 'Sistema'
// Arcos
$arcos = PermissionType::firstOrCreate([
'name' => 'Gestión de Arcos'
]);
$systemPulse = $this->onPermission('pulse', 'Monitoreo de Pulse', $pulse, 'api');
[
$arcoIndex,
$arcoCreate,
$arcoEdit,
$arcoDestroy
] = $this->onCRUD('arcos', $arcos, 'api');
$pulse = PermissionType::create([
'name' => 'Historial de actividades'
$arcosToggleEstado = $this->onPermission('arcos.toggle-estado', 'Activar/Desactivar arcos', $arcos, 'api');
$arcosDetecciones = $this->onPermission('arcos.detecciones.dia', 'Ver detecciones del día de un arco', $arcos, 'api');
//Consulta de vehículo
$vehicles = PermissionType::firstOrCreate([
'name' => 'Gestión de Vehículos'
]);
$activityIndex = $this->onIndex(
code: 'activities',
type: $pulse,
guardName: 'api'
);
$vehiclesConsulta = $this->onPermission('vehicles.consultar', 'Consultar vehículo por placa o VIN', $vehicles, 'api');
$vehiclesRecuperar = $this->onPermission('vehicles.recuperar', 'Marcar vehículo como recuperado', $vehicles, 'api');
$vehiclesDetectar = $this->onPermission('vehicles.detectar', 'Buscar vehículo por placa o VIN', $vehicles, 'api');
$vehiclesRobados = $this->onPermission('vehicles.robados', 'Listar vehículos robados', $vehicles, 'api');
$vehiclesRecuperados = $this->onPermission('vehicles.recuperados', 'Listar vehículos recuperados', $vehicles, 'api');
$vehiclesDetecciones = $this->onPermission('vehicles.detecciones', 'Listar todas las detecciones', $vehicles, 'api');
// Desarrollador
Role::create([
Role::firstOrCreate([
'name' => 'developer',
'description' => 'Desarrollador',
'guard_name' => 'api'
])->givePermissionTo(Permission::all());
])->syncPermissions(Permission::all());
// Administrador
Role::create([
Role::firstOrCreate([
'name' => 'admin',
'description' => 'Administrador',
'guard_name' => 'api'
])->givePermissionTo(
])->syncPermissions(
$userIndex,
$userCreate,
$userEdit,
@ -89,8 +102,48 @@ public function run(): void
$roleCreate,
$roleEdit,
$roleDestroy,
$systemPulse,
$activityIndex
$arcoIndex, //arcos
$arcoCreate,
$arcoEdit,
$arcoDestroy,
$arcosToggleEstado,
$arcosDetecciones,
$vehiclesConsulta, //vehicles
$vehiclesRecuperar,
$vehiclesDetectar,
);
Role::firstOrCreate([
'name' => 'supervisor',
'description' => 'Supervisor',
'guard_name' => 'api'
])->syncPermissions(
$vehiclesConsulta, //vehicles
$vehiclesRecuperar,
$vehiclesDetectar,
$vehiclesRobados,
$vehiclesRecuperados,
$vehiclesDetecciones
);
Role::firstOrCreate([
'name' => 'operador',
'description' => 'Operador',
'guard_name' => 'api'
])->syncPermissions(
$vehiclesConsulta, //vehicles
$vehiclesDetectar,
$vehiclesRobados,
$vehiclesRecuperados,
$vehiclesDetecciones
);
Role::firstOrCreate([
'name' => 'investigador',
'description' => 'Investigador',
'guard_name' => 'api'
])->syncPermissions(
);
}
}