232 lines
7.7 KiB
PHP
232 lines
7.7 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 Illuminate\Support\Facades\DB;
|
|
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');
|
|
|
|
$pulse = PermissionType::firstOrCreate([
|
|
'name' => 'Sistema'
|
|
]);
|
|
|
|
$systemPulse = $this->onPermission('pulse', 'Monitoreo de Pulse', $pulse, 'api');
|
|
|
|
$pulse = PermissionType::firstOrCreate([
|
|
'name' => 'Historial de actividades'
|
|
]);
|
|
|
|
$activityIndex = $this->onIndex(
|
|
code: 'activities',
|
|
type: $pulse,
|
|
guardName: 'api'
|
|
);
|
|
|
|
// ==================== NUEVOS PERMISOS PARA PDV ====================
|
|
|
|
// Permisos de Caja
|
|
$cashRegisterType = PermissionType::firstOrCreate([
|
|
'name' => 'Caja registradora'
|
|
]);
|
|
|
|
$cashRegisterIndex = $this->onIndex('cash-registers', 'Mostrar datos', $cashRegisterType, 'api');
|
|
$cashRegisterOpen = $this->onPermission('cash-registers.open', 'Abrir caja', $cashRegisterType, 'api');
|
|
$cashRegisterClose = $this->onPermission('cash-registers.close', 'Cerrar caja', $cashRegisterType, 'api');
|
|
$cashRegisterCurrent = $this->onPermission('cash-registers.current', 'Ver caja actual', $cashRegisterType, 'api');
|
|
|
|
// Permisos de Ventas
|
|
$salesType = PermissionType::firstOrCreate([
|
|
'name' => 'Ventas'
|
|
]);
|
|
|
|
$salesIndex = $this->onIndex('sales', 'Mostrar datos', $salesType, 'api');
|
|
$salesCreate = $this->onCreate('sales', 'Crear registros', $salesType, 'api');
|
|
$salesCancel = $this->onPermission('sales.cancel', 'Cancelar venta', $salesType, 'api');
|
|
|
|
// Permisos de Inventario (solo lectura)
|
|
$inventoryType = PermissionType::firstOrCreate([
|
|
'name' => 'Inventario'
|
|
]);
|
|
|
|
|
|
$inventoryIndex = $this->onIndex('inventario', 'Mostrar datos', $inventoryType, 'api');
|
|
$inventoryCreate = $this->onCreate('inventario', 'Crear registros', $inventoryType, 'api');
|
|
$inventoryEdit = $this->onEdit('inventario', 'Actualizar registro', $inventoryType, 'api');
|
|
$inventoryDestroy = $this->onDestroy('inventario', 'Eliminar registro', $inventoryType, 'api');
|
|
$inventoryImport = $this->onPermission('inventario.import', 'Importar productos desde Excel', $inventoryType, 'api');
|
|
|
|
|
|
// Permisos de Clientes
|
|
$clientsType = PermissionType::firstOrCreate([
|
|
'name' => 'Clientes'
|
|
]);
|
|
|
|
[
|
|
$clientIndex,
|
|
$clientCreate,
|
|
$clientEdit,
|
|
$clientDestroy
|
|
] = $this->onCRUD('clients', $clientsType, 'api');
|
|
|
|
// Permisos de Niveles de Clientes (Tiers)
|
|
$clientTiersType = PermissionType::firstOrCreate([
|
|
'name' => 'Niveles de clientes'
|
|
]);
|
|
|
|
[
|
|
$clientTierIndex,
|
|
$clientTierCreate,
|
|
$clientTierEdit,
|
|
$clientTierDestroy
|
|
] = $this->onCRUD('client-tiers', $clientTiersType, 'api');
|
|
|
|
// Permisos de Solicitudes de Factura
|
|
$invoiceRequestsType = PermissionType::firstOrCreate([
|
|
'name' => 'Solicitudes de factura'
|
|
]);
|
|
|
|
$invoiceRequestIndex = $this->onIndex('invoice-requests', 'Mostrar solicitudes', $invoiceRequestsType, 'api');
|
|
$invoiceRequestShow = $this->onPermission('invoice-requests.show', 'Ver detalles', $invoiceRequestsType, 'api');
|
|
$invoiceRequestProcess = $this->onPermission('invoice-requests.process', 'Procesar solicitud', $invoiceRequestsType, 'api');
|
|
$invoiceRequestReject = $this->onPermission('invoice-requests.reject', 'Rechazar solicitud', $invoiceRequestsType, 'api');
|
|
$invoiceRequestUpload = $this->onPermission('invoice-requests.upload', 'Subir archivos de factura', $invoiceRequestsType, 'api');
|
|
$invoiceRequestStats = $this->onPermission('invoice-requests.stats', 'Ver estadísticas', $invoiceRequestsType, 'api');
|
|
|
|
|
|
// ==================== ROLES ====================
|
|
|
|
// 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,
|
|
$systemPulse,
|
|
$activityIndex,
|
|
// Permisos completos de PDV
|
|
$cashRegisterIndex,
|
|
$cashRegisterOpen,
|
|
$cashRegisterClose,
|
|
$cashRegisterCurrent,
|
|
$salesIndex,
|
|
$salesCreate,
|
|
$salesCancel,
|
|
$inventoryIndex,
|
|
$inventoryImport,
|
|
$inventoryCreate,
|
|
$inventoryEdit,
|
|
$inventoryDestroy,
|
|
$clientIndex,
|
|
$clientCreate,
|
|
$clientEdit,
|
|
$clientDestroy,
|
|
$clientTierIndex,
|
|
$clientTierCreate,
|
|
$clientTierEdit,
|
|
$clientTierDestroy,
|
|
$invoiceRequestIndex,
|
|
$invoiceRequestShow,
|
|
$invoiceRequestProcess,
|
|
$invoiceRequestReject,
|
|
$invoiceRequestUpload,
|
|
$invoiceRequestStats
|
|
);
|
|
|
|
//Operador PDV (solo permisos de operación de caja y ventas)
|
|
Role::firstOrCreate([
|
|
'name' => 'operador_pdv',
|
|
'description' => 'Operador de Punto de Venta',
|
|
'guard_name' => 'api'
|
|
])->syncPermissions(
|
|
// Caja
|
|
$cashRegisterIndex, // Ver historial de cajas
|
|
$cashRegisterOpen, // Abrir caja
|
|
$cashRegisterClose, // Cerrar caja
|
|
$cashRegisterCurrent, // Ver caja actual
|
|
// Ventas
|
|
$salesIndex, // Ver historial de ventas
|
|
$salesCreate, // Crear ventas
|
|
// Inventario (solo lectura)
|
|
$inventoryIndex,
|
|
$inventoryImport, // Importar productos
|
|
$inventoryCreate,
|
|
$inventoryEdit,
|
|
$inventoryDestroy,
|
|
// Clientes
|
|
$clientIndex,
|
|
$clientTierIndex,
|
|
$clientTierCreate,
|
|
$clientTierEdit,
|
|
$clientTierDestroy,
|
|
// Solicitudes de factura (solo lectura)
|
|
$invoiceRequestIndex
|
|
);
|
|
}
|
|
}
|