arcos-backend/database/seeders/RoleSeeder.php
2026-02-11 13:07:59 -06:00

150 lines
4.5 KiB
PHP

<?php namespace Database\Seeders;
/**
* @copyright (c) 2025 Notsoweb Software (https://notsoweb.com) - All Rights Reserved
*/
use App\Models\PermissionType;
use App\Models\Role;
use Illuminate\Database\Seeder;
use Notsoweb\LaravelCore\Traits\MySql\RolePermission;
use Spatie\Permission\Models\Permission;
/**
* Roles y permisos
*
* @author Moisés Cortés C. <moises.cortes@notsoweb.com>
*
* @version 1.0.0
*/
class RoleSeeder extends Seeder
{
use RolePermission;
/**
* Run the database seeds.
*/
public function run(): void
{
$users = PermissionType::firstOrCreate([
'name' => 'Usuarios'
]);
[
$userIndex,
$userCreate,
$userEdit,
$userDestroy
] = $this->onCRUD('users', $users, 'api');
$userSettings = $this->onPermission('users.settings', 'Configuración de usuarios', $users, 'api');
$userOnline = $this->onPermission('users.online', 'Usuarios en linea', $users, 'api');
$roles = PermissionType::firstOrCreate([
'name' => 'Roles'
]);
[
$roleIndex,
$roleCreate,
$roleEdit,
$roleDestroy
] = $this->onCRUD('roles', $roles, 'api');
// Arcos
$arcos = PermissionType::firstOrCreate([
'name' => 'Gestión de Arcos'
]);
[
$arcoIndex,
$arcoCreate,
$arcoEdit,
$arcoDestroy
] = $this->onCRUD('arcos', $arcos, 'api');
$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'
]);
$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::firstOrCreate([
'name' => 'developer',
'description' => 'Desarrollador',
'guard_name' => 'api'
])->syncPermissions(Permission::all());
// Administrador
Role::firstOrCreate([
'name' => 'admin',
'description' => 'Administrador',
'guard_name' => 'api'
])->syncPermissions(
$userIndex,
$userCreate,
$userEdit,
$userDestroy,
$userSettings,
$userOnline,
$roleIndex,
$roleCreate,
$roleEdit,
$roleDestroy,
$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(
);
}
}