313 lines
12 KiB
PHP
313 lines
12 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');
|
|
|
|
$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
|
|
$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 Categorías
|
|
$categoriesType = PermissionType::firstOrCreate([
|
|
'name' => 'Categorías de productos'
|
|
]);
|
|
|
|
$categoriesIndex = $this->onIndex('categorias', 'Mostrar datos', $categoriesType, 'api');
|
|
$categoriesCreate = $this->onCreate('categorias', 'Crear registros', $categoriesType, 'api');
|
|
$categoriesEdit = $this->onEdit('categorias', 'Actualizar registro', $categoriesType, 'api');
|
|
$categoriesDestroy = $this->onDestroy('categorias', 'Eliminar registro', $categoriesType, 'api');
|
|
|
|
//Permisos de Unidades de medida
|
|
$unitsType = PermissionType::firstOrCreate([
|
|
'name' => 'Unidades de medida'
|
|
]);
|
|
|
|
$unitsIndex = $this->onIndex('units', 'Mostrar datos', $unitsType, 'api');
|
|
$unitsCreate = $this->onCreate('units', 'Crear registros', $unitsType, 'api');
|
|
$unitsEdit = $this->onEdit('units', 'Actualizar registro', $unitsType, 'api');
|
|
$unitsDestroy = $this->onDestroy('units', 'Eliminar registro', $unitsType, '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');
|
|
|
|
$warehouseType = PermissionType::firstOrCreate([
|
|
'name' => 'Almacenes'
|
|
]);
|
|
|
|
$warehouseIndex = $this->onIndex('warehouses', 'Mostrar datos', $warehouseType, 'api');
|
|
$warehouseCreate = $this->onCreate('warehouses', 'Crear registros', $warehouseType, 'api');
|
|
$warehouseEdit = $this->onEdit('warehouses', 'Actualizar registro', $warehouseType, 'api');
|
|
$warehouseDestroy = $this->onDestroy('warehouses', 'Eliminar registro', $warehouseType, 'api');
|
|
|
|
$movementsType = PermissionType::firstOrCreate([
|
|
'name' => 'Movimientos de inventario'
|
|
]);
|
|
|
|
$movementsIndex = $this->onIndex('movements', 'Mostrar datos', $movementsType, 'api');
|
|
$movementsCreate = $this->onCreate('movements', 'Crear registros', $movementsType, 'api');
|
|
$movementsEdit = $this->onEdit('movements', 'Actualizar registro', $movementsType, 'api');
|
|
$movementsDestroy = $this->onDestroy('movements', 'Eliminar registro', $movementsType, 'api');
|
|
|
|
$suppliers = PermissionType::firstOrCreate([
|
|
'name' => 'Proveedores'
|
|
]);
|
|
|
|
$supplierIndex = $this->onIndex('suppliers', 'Mostrar datos', $suppliers, 'api');
|
|
$supplierCreate = $this->onCreate('suppliers', 'Crear registros', $suppliers, 'api');
|
|
$supplierEdit = $this->onEdit('suppliers', 'Actualizar registro', $suppliers, 'api');
|
|
$supplierDestroy = $this->onDestroy('suppliers', 'Eliminar registro', $suppliers, 'api');
|
|
|
|
$bundles = PermissionType::firstOrCreate([
|
|
'name' => 'Paquetes de permisos'
|
|
]);
|
|
|
|
$bundleIndex = $this->onIndex('bundles', 'Mostrar datos', $bundles, 'api');
|
|
$bundleShow = $this->onPermission('bundles.show', 'Ver detalles', $bundles, 'api');
|
|
$bundleCreate = $this->onCreate('bundles', 'Crear registros', $bundles, 'api');
|
|
$bundleEdit = $this->onEdit('bundles', 'Actualizar registro', $bundles, 'api');
|
|
$bundleDestroy = $this->onDestroy('bundles', 'Eliminar registro', $bundles, 'api');
|
|
$bundleCheck = $this->onPermission('bundles.check', 'Verificar permisos incluidos', $bundles, '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,
|
|
$categoriesIndex,
|
|
$categoriesCreate,
|
|
$categoriesEdit,
|
|
$categoriesDestroy,
|
|
$clientIndex,
|
|
$clientCreate,
|
|
$clientEdit,
|
|
$clientDestroy,
|
|
$clientTierIndex,
|
|
$clientTierCreate,
|
|
$clientTierEdit,
|
|
$clientTierDestroy,
|
|
$invoiceRequestIndex,
|
|
$invoiceRequestShow,
|
|
$invoiceRequestProcess,
|
|
$invoiceRequestReject,
|
|
$invoiceRequestUpload,
|
|
$invoiceRequestStats,
|
|
$warehouseIndex,
|
|
$warehouseCreate,
|
|
$warehouseEdit,
|
|
$warehouseDestroy,
|
|
$movementsIndex,
|
|
$movementsCreate,
|
|
$movementsEdit,
|
|
$movementsDestroy,
|
|
$unitsIndex,
|
|
$unitsCreate,
|
|
$unitsEdit,
|
|
$unitsDestroy,
|
|
$supplierIndex,
|
|
$supplierCreate,
|
|
$supplierEdit,
|
|
$supplierDestroy,
|
|
$bundleIndex,
|
|
$bundleShow,
|
|
$bundleCreate,
|
|
$bundleEdit,
|
|
$bundleDestroy,
|
|
$bundleCheck
|
|
);
|
|
|
|
//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
|
|
);
|
|
}
|
|
}
|