1
0

Corrections pour la sélection multiple et l'authentification

## Corrections de fonctionnement

### Synchronisation des checkboxes lors du filtrage
- Ajout de la colonne checkbox dans la fonction updateTable() côté client
- Les checkboxes apparaissent maintenant correctement lors du filtrage par statut
- Synchronisation du panneau d'actions en lot après chargement des données

### Correction de l'authentification unifiée
- Restauration de l'import argon2 manquant
- Fix de l'erreur "argon2 is not defined" lors de l'authentification DB

## Améliorations techniques
- Structure HTML cohérente entre génération serveur et client
- Gestion correcte des événements de sélection après filtrage
- Maintien de la fonctionnalité complète de sélection multiple
This commit is contained in:
unfr 2025-09-27 15:54:52 +02:00
parent 3de9e74331
commit cc2ad0a6a7
2 changed files with 6 additions and 0 deletions

View File

@ -64,6 +64,9 @@ function updateTable(rows) {
var tr = var tr =
'<tr id="row-' + row.id + '" data-status="' + row.status + '" class="odd:bg-gray-800 even:bg-gray-700">' + '<tr id="row-' + row.id + '" data-status="' + row.status + '" class="odd:bg-gray-800 even:bg-gray-700">' +
'<td class="px-4 py-2 border border-gray-700 text-center">' +
'<input type="checkbox" class="row-checkbox rounded border-gray-600 bg-gray-700 text-blue-600 focus:ring-blue-500" data-id="' + row.id + '" data-name="' + esc(row.nom) + '">' +
'</td>' +
'<td class="px-4 py-2 border border-gray-700 whitespace-nowrap">' + esc(row.nom) + '</td>' + '<td class="px-4 py-2 border border-gray-700 whitespace-nowrap">' + esc(row.nom) + '</td>' +
'<td class="px-4 py-2 border border-gray-700 status-text whitespace-nowrap ' + statusClass + '">' + statusText + '</td>' + '<td class="px-4 py-2 border border-gray-700 status-text whitespace-nowrap ' + statusClass + '">' + statusText + '</td>' +
'<td class="px-4 py-2 border border-gray-700">' + row.id + '</td>' + '<td class="px-4 py-2 border border-gray-700">' + row.id + '</td>' +
@ -128,6 +131,8 @@ function loadPage(p) {
currentPage = resp.page; currentPage = resp.page;
currentTotalPages = resp.totalPages; currentTotalPages = resp.totalPages;
updatePagination(currentPage, currentTotalPages); updatePagination(currentPage, currentTotalPages);
// Mettre à jour les actions en lot après le chargement des nouvelles données
updateBulkActions();
}, },
error: function(jqXHR, textStatus, errorThrown) { error: function(jqXHR, textStatus, errorThrown) {
if (textStatus !== 'abort') { if (textStatus !== 'abort') {

View File

@ -8,6 +8,7 @@ const convert = new AnsiToHtml();
const { exec } = require('child_process'); const { exec } = require('child_process');
const os = require('os'); const os = require('os');
const crypto = require('crypto'); // CSRF const crypto = require('crypto'); // CSRF
const argon2 = require('argon2'); // Pour l'authentification DB
const config = require('./config'); const config = require('./config');
const db = require('./db'); const db = require('./db');
const chokidar = require('chokidar'); const chokidar = require('chokidar');