* * @version 1.0.0 */ class RoleSeeder extends Seeder { use RolePermission; /** * Run the database seeds. */ public function run(): void { $users = PermissionType::create([ '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::create([ 'name' => 'Roles' ]); [ $roleIndex, $roleCreate, $roleEdit, $roleDestroy ] = $this->onCRUD('roles', $roles, 'api'); $pulse = PermissionType::create([ 'name' => 'Sistema' ]); $systemPulse = $this->onPermission('pulse', 'Monitoreo de Pulse', $pulse, 'api'); $pulse = PermissionType::create([ 'name' => 'Historial de actividades' ]); $activityIndex = $this->onIndex( code: 'activities', type: $pulse, guardName: 'api' ); // ==================== NUEVOS PERMISOS PARA PDV ==================== // Permisos de Caja $cashRegisterType = PermissionType::create([ '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::create([ '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::create([ 'name' => 'Inventario' ]); $inventoryIndex = $this->onIndex('inventario', 'Mostrar datos', $inventoryType, 'api'); // Permisos de Clientes $clientsType = PermissionType::create([ 'name' => 'Clientes' ]); [ $clientIndex, $clientCreate, $clientEdit, $clientDestroy ] = $this->onCRUD('clients', $clientsType, 'api'); // ==================== ROLES ==================== // Desarrollador Role::create([ 'name' => 'developer', 'description' => 'Desarrollador', 'guard_name' => 'api' ])->givePermissionTo(Permission::all()); // Administrador Role::create([ 'name' => 'admin', 'description' => 'Administrador', 'guard_name' => 'api' ])->givePermissionTo( $userIndex, $userCreate, $userEdit, $userDestroy, $userSettings, $userOnline, $roleIndex, $roleCreate, $roleEdit, $roleDestroy, $systemPulse, $activityIndex, // Permisos completos de PDV $cashRegisterIndex, $cashRegisterOpen, $cashRegisterClose, $cashRegisterCurrent, $salesIndex, $salesCreate, $salesCancel, $inventoryIndex, $clientIndex, $clientCreate, $clientEdit, $clientDestroy ); //Operador PDV (solo permisos de operación de caja y ventas) Role::create([ 'name' => 'operador_pdv', 'description' => 'Operador de Punto de Venta', 'guard_name' => 'api' ])->givePermissionTo( // 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, // Listar productos // Clientes $clientIndex, // Buscar clientes $clientCreate // Crear clientes ); } }