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

View File

@ -15,11 +15,11 @@
/** /**
* Controlador de usuarios * Controlador de usuarios
* *
* Permite la administración de los usuarios en general. * Permite la administración de los usuarios en general.
* *
* @author Moisés Cortés C <moises.cortes@notsoweb.com> * @author Moisés Cortés C <moises.cortes@notsoweb.com>
* *
* @version 1.0.0 * @version 1.0.0
*/ */
class UserController extends Controller class UserController extends Controller
@ -29,7 +29,7 @@ class UserController extends Controller
*/ */
public function index() public function index()
{ {
$users = User::orderBy('name'); $users = User::orderBy('id', 'DESC')->where('id', '!=', 1);
QuerySupport::queryByKeys($users, ['name', 'email']); QuerySupport::queryByKeys($users, ['name', 'email']);
@ -152,7 +152,7 @@ public function activity(UserActivityRequest $request, User $user)
} }
return ApiResponse::OK->response([ return ApiResponse::OK->response([
'models' => 'models' =>
$model->orderBy('created_at', 'desc') $model->orderBy('created_at', 'desc')
->paginate(config('app.pagination')) ->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 * Roles y permisos
* *
* @author Moisés Cortés C. <moises.cortes@notsoweb.com> * @author Moisés Cortés C. <moises.cortes@notsoweb.com>
* *
* @version 1.0.0 * @version 1.0.0
*/ */
class RoleSeeder extends Seeder class RoleSeeder extends Seeder
@ -25,7 +25,7 @@ class RoleSeeder extends Seeder
*/ */
public function run(): void public function run(): void
{ {
$users = PermissionType::create([ $users = PermissionType::firstOrCreate([
'name' => 'Usuarios' 'name' => 'Usuarios'
]); ]);
@ -39,7 +39,7 @@ public function run(): void
$userSettings = $this->onPermission('users.settings', 'Configuración de usuarios', $users, 'api'); $userSettings = $this->onPermission('users.settings', 'Configuración de usuarios', $users, 'api');
$userOnline = $this->onPermission('users.online', 'Usuarios en linea', $users, 'api'); $userOnline = $this->onPermission('users.online', 'Usuarios en linea', $users, 'api');
$roles = PermissionType::create([ $roles = PermissionType::firstOrCreate([
'name' => 'Roles' 'name' => 'Roles'
]); ]);
@ -50,35 +50,48 @@ public function run(): void
$roleDestroy $roleDestroy
] = $this->onCRUD('roles', $roles, 'api'); ] = $this->onCRUD('roles', $roles, 'api');
$pulse = PermissionType::create([ // Arcos
'name' => 'Sistema' $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([ $arcosToggleEstado = $this->onPermission('arcos.toggle-estado', 'Activar/Desactivar arcos', $arcos, 'api');
'name' => 'Historial de actividades' $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( $vehiclesConsulta = $this->onPermission('vehicles.consultar', 'Consultar vehículo por placa o VIN', $vehicles, 'api');
code: 'activities', $vehiclesRecuperar = $this->onPermission('vehicles.recuperar', 'Marcar vehículo como recuperado', $vehicles, 'api');
type: $pulse, $vehiclesDetectar = $this->onPermission('vehicles.detectar', 'Buscar vehículo por placa o VIN', $vehicles, 'api');
guardName: '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 // Desarrollador
Role::create([ Role::firstOrCreate([
'name' => 'developer', 'name' => 'developer',
'description' => 'Desarrollador', 'description' => 'Desarrollador',
'guard_name' => 'api' 'guard_name' => 'api'
])->givePermissionTo(Permission::all()); ])->syncPermissions(Permission::all());
// Administrador // Administrador
Role::create([ Role::firstOrCreate([
'name' => 'admin', 'name' => 'admin',
'description' => 'Administrador', 'description' => 'Administrador',
'guard_name' => 'api' 'guard_name' => 'api'
])->givePermissionTo( ])->syncPermissions(
$userIndex, $userIndex,
$userCreate, $userCreate,
$userEdit, $userEdit,
@ -89,8 +102,48 @@ public function run(): void
$roleCreate, $roleCreate,
$roleEdit, $roleEdit,
$roleDestroy, $roleDestroy,
$systemPulse, $arcoIndex, //arcos
$activityIndex $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(
); );
} }
} }