Ajoute sql/create_admin_jure.sql, script idempotent créant/réinitialisant le compte de démonstration destiné aux personnes qui consultent le site (rôle Admin). Aucune instruction USE : la base cible vient du paramètre -d de la connexion, avec un garde-fou qui arrête le script si les tables attendues sont absentes. Copie aussi sql/data_sentinel_auth.sql (déjà présent dans le dump livré sous RENDU/02_Dump_SQL/) : le README de ce dépôt le référençait déjà, mais le dossier sql/ n'existait pas encore ici. Documente le compte dans le tableau des comptes de démo du README.
89 lines
3.1 KiB
Transact-SQL
89 lines
3.1 KiB
Transact-SQL
-- ============================================================
|
|
-- DATA SENTINEL — Création / réinitialisation du compte « Juré »
|
|
-- Auteur : COYAUD Anthony
|
|
-- Version : 1.1 — Août 2026
|
|
--
|
|
-- Compte Admin destiné aux personnes qui consultent l'application
|
|
-- (évaluateurs, jury, démonstration).
|
|
--
|
|
-- identifiant : Juré
|
|
-- mail : JURE@NEXA.com
|
|
-- mot de passe : 123456
|
|
-- rôle : Admin
|
|
--
|
|
-- Script idempotent : il peut être rejoué sur une base déjà déployée
|
|
-- sans dupliquer le compte ni toucher aux autres utilisateurs.
|
|
-- Prérequis : data_sentinel_auth.sql déjà exécuté ([USER] + JOURNAL_AUDIT).
|
|
--
|
|
-- Pas d'instruction USE : la base cible vient du paramètre -d de la
|
|
-- connexion, et le garde-fou ci-dessous interrompt le script si ce
|
|
-- n'est pas la bonne. Tout tient dans un seul lot (aucun GO), sans
|
|
-- quoi le RETURN du garde-fou n'empêcherait pas la suite de tourner.
|
|
--
|
|
-- Exécution :
|
|
-- sqlcmd -S <serveur> -d <base> -U <user> -P <mdp> -C -b -f 65001 \
|
|
-- -i sql/create_admin_jure.sql
|
|
-- ============================================================
|
|
|
|
SET NOCOUNT ON;
|
|
SET XACT_ABORT ON;
|
|
|
|
DECLARE @base NVARCHAR(128) = DB_NAME();
|
|
|
|
IF OBJECT_ID('[USER]', 'U') IS NULL OR OBJECT_ID('JOURNAL_AUDIT', 'U') IS NULL
|
|
BEGIN
|
|
RAISERROR(
|
|
'ARRET : base incorrecte (%s). [USER] ou JOURNAL_AUDIT est introuvable. Reconnectez-vous sur la base Data Sentinel (option -d).',
|
|
16, 1, @base);
|
|
RETURN;
|
|
END
|
|
|
|
-- Hachage bcrypt (coût 12) du mot de passe de démonstration.
|
|
-- Généré avec passlib.CryptContext(schemes=["bcrypt"]) — même librairie que auth.py.
|
|
DECLARE @username NVARCHAR(100) = N'Juré';
|
|
DECLARE @email NVARCHAR(200) = N'JURE@NEXA.com';
|
|
DECLARE @password_hash NVARCHAR(255) = N'$2b$12$nnWMOCjSiUq4rAyPGbC3W.HGdsvWKu9kEfLst6zBIEIcsgP97W94m';
|
|
|
|
BEGIN TRY
|
|
BEGIN TRANSACTION;
|
|
|
|
IF EXISTS (SELECT 1 FROM [USER] WHERE username = @username)
|
|
BEGIN
|
|
UPDATE [USER]
|
|
SET email = @email,
|
|
password_hash = @password_hash,
|
|
role = N'Admin',
|
|
actif = 1
|
|
WHERE username = @username;
|
|
|
|
INSERT INTO JOURNAL_AUDIT (id_user, username, action, detail)
|
|
SELECT id_user, username, 'RESET_PASSWORD', 'Compte de visite reinitialise (script SQL)'
|
|
FROM [USER] WHERE username = @username;
|
|
|
|
PRINT 'Compte "Jure" deja present -> mis a jour.';
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
INSERT INTO [USER] (username, email, password_hash, role, actif)
|
|
VALUES (@username, @email, @password_hash, N'Admin', 1);
|
|
|
|
INSERT INTO JOURNAL_AUDIT (id_user, username, action, detail)
|
|
SELECT id_user, username, 'CREATE_USER', 'Compte de visite cree (script SQL)'
|
|
FROM [USER] WHERE username = @username;
|
|
|
|
PRINT 'Compte "Jure" cree.';
|
|
END
|
|
|
|
COMMIT TRANSACTION;
|
|
END TRY
|
|
BEGIN CATCH
|
|
IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION;
|
|
PRINT 'ECHEC : ' + ERROR_MESSAGE();
|
|
THROW;
|
|
END CATCH
|
|
|
|
-- Vérification
|
|
SELECT id_user, username, email, role, actif, created_at, last_login
|
|
FROM [USER]
|
|
WHERE username = N'Juré';
|