Files
ms1inscription-v5/sql/MSIN-info-restore-from-backup.sql
stephan c7482016ce Implement superadmin login redirection and session handling improvements
This commit introduces a new function, `fxSuperadmRedirectToLoginIfNeeded`, to streamline the login redirection process for superadmin users. It enhances session management by checking for user authentication and allowing legacy account access under specific conditions. Additionally, the login flow is updated to ensure users are redirected appropriately after login, improving the overall security and user experience in the superadmin interface. These changes aim to enhance maintainability and clarity in session handling across various superadmin pages.
2026-07-07 14:15:48 -04:00

89 lines
4.2 KiB
SQL

-- MSIN-info — Restauration MASSIVE table info depuis backup (Navicat)
-- Contexte : après sync_static_db / import prod — clés brutes partout (info_texte = info_clef)
-- Prérequis :
-- 1) Backup d'avant incident importée sur le MÊME serveur (ex. devinscription_bak)
-- 2) Exécuter MSIN-info-restore-diag-compare.sql et valider les volumes
-- 3) FAIRE UN DUMP de devinscription_preprod.info AVANT ce script
-- Idempotent : INSERT manquants + UPDATE poubelles ; ne touche pas les textes déjà OK
-- Notes prod client : attendre blocage sync info ; même procédure avec backup prod pré-sync
SET NAMES utf8mb4;
-- === CONFIG — modifier avant exécution ===
SET @db_cible = 'devinscription_preprod';
SET @db_backup = 'devinscription_bak';
-- ---------------------------------------------------------------------------
-- Étape 1 — Insérer les lignes absentes en cible (clé = info_clef + info_langue + info_prg)
-- ---------------------------------------------------------------------------
INSERT INTO devinscription_preprod.info (
info_clef, info_langue, info_texte, info_aide, info_prg,
info_description, info_trie, info_actif,
info_option1, info_option2, info_option3, info_creation
)
SELECT
b.info_clef, b.info_langue, b.info_texte, b.info_aide, b.info_prg,
b.info_description, b.info_trie, b.info_actif,
b.info_option1, b.info_option2, b.info_option3, NOW()
FROM devinscription_bak.info b
LEFT JOIN devinscription_preprod.info c
ON c.info_clef = b.info_clef AND c.info_langue = b.info_langue AND c.info_prg = b.info_prg
WHERE c.pk_info IS NULL;
-- ---------------------------------------------------------------------------
-- Étape 2 — Réparer les poubelles (info_texte = info_clef) quand backup a un vrai libellé
-- ---------------------------------------------------------------------------
UPDATE devinscription_preprod.info c
INNER JOIN devinscription_bak.info b
ON b.info_clef = c.info_clef AND b.info_langue = c.info_langue AND b.info_prg = c.info_prg
SET
c.info_texte = b.info_texte,
c.info_aide = b.info_aide,
c.info_description = b.info_description,
c.info_trie = b.info_trie,
c.info_actif = b.info_actif,
c.info_option1 = b.info_option1,
c.info_option2 = b.info_option2,
c.info_option3 = b.info_option3,
c.info_maj = NOW()
WHERE c.info_texte = c.info_clef
AND b.info_texte <> b.info_clef
AND TRIM(b.info_texte) <> '';
-- ---------------------------------------------------------------------------
-- Étape 3 — Réparer texte vide en cible (backup non vide)
-- ---------------------------------------------------------------------------
UPDATE devinscription_preprod.info c
INNER JOIN devinscription_bak.info b
ON b.info_clef = c.info_clef AND b.info_langue = c.info_langue AND b.info_prg = c.info_prg
SET
c.info_texte = b.info_texte,
c.info_aide = b.info_aide,
c.info_maj = NOW()
WHERE TRIM(c.info_texte) = ''
AND TRIM(b.info_texte) <> ''
AND b.info_texte <> b.info_clef;
-- ---------------------------------------------------------------------------
-- Étape 4 — Supprimer poubelles orphelines (absentes du backup, jamais traduites)
-- ATTENTION : exécuter seulement si section E du diag est cohérente
-- ---------------------------------------------------------------------------
DELETE c FROM devinscription_preprod.info c
LEFT JOIN devinscription_bak.info b
ON b.info_clef = c.info_clef AND b.info_langue = c.info_langue AND b.info_prg = c.info_prg
WHERE c.info_texte = c.info_clef
AND b.pk_info IS NULL;
-- ---------------------------------------------------------------------------
-- Étape 5 — Vérification post-restore (doit tendre vers 0 poubelle)
-- ---------------------------------------------------------------------------
SELECT 'post_total' AS k, COUNT(*) AS v FROM devinscription_preprod.info
UNION ALL
SELECT 'post_poubelle', COUNT(*) FROM devinscription_preprod.info WHERE info_texte = info_clef
UNION ALL
SELECT 'post_manquants_vs_backup', COUNT(*)
FROM devinscription_bak.info b
LEFT JOIN devinscription_preprod.info c
ON c.info_clef = b.info_clef AND c.info_langue = b.info_langue AND c.info_prg = b.info_prg
WHERE c.pk_info IS NULL;