Procédure publique · ORM_CSHX2 · Configuration / Session

ORM_UserIdentification

Initialise ou consulte l'identification de l'utilisateur courant dans la session ORM_CSHX2 — identifiant utilisateur, nom, identifiant du poste de travail. Procédure surchargée : variante écriture (3 paramètres, sans retour) et variante lecture (sans paramètre, retour triplet).

PUBLIQUE SURCHARGÉE SESSION MySQL · MariaDB · PostgreSQL
01

📋 Description

ORM_UserIdentification gère les trois informations d'identification de l'utilisateur courant pour la session ORM_CSHX2 : son identifiant numérique, son nom, et l'identifiant du poste de travail depuis lequel il opère. Ces informations sont stockées dans la session ORM et sont utilisées par le framework lors des opérations de persistance pour renseigner automatiquement les colonnes de traçabilité.

La procédure existe en deux variantes : une variante d'écriture (3 paramètres, sans retour) qui initialise les valeurs, et une variante de lecture (sans paramètre) qui retourne les valeurs courantes sous forme de triplet.

🎯 Quand utiliser cette procédure

1. Au démarrage de l'application, juste après l'authentification de l'utilisateur. Appeler la variante d'écriture une seule fois pour positionner les 3 informations qui resteront valides toute la durée de la session ORM.

2. Lors d'un changement d'identité utilisateur en cours de session (cas rare mais possible : impersonation, déconnexion / reconnexion sans relancer l'application). Réinvoquer la variante d'écriture met à jour les valeurs.

3. Pour afficher l'utilisateur courant en IHM (libellé de barre de statut, en-tête de fenêtre, audit) — la variante de lecture restitue les 3 valeurs telles que positionnées par le dernier appel d'écriture.

✅ Auto-alimentation des colonnes de traçabilité

Une fois positionnées, ces 3 valeurs sont utilisées automatiquement par les méthodes de persistance (mth_Enregistrer, mth_EnregistrerTableau) lors des INSERT pour alimenter les colonnes framework :

SQL_ID_USER_INSERTnUserID
SQL_IP_USERsComputerID

Le code applicatif n'a donc rien à faire au moment de l'enregistrement — la traçabilité est transparente.

02

🔑 Signatures

La procédure existe en deux variantes que le compilateur résout automatiquement selon les paramètres passés à l'appel.

Variante 1 — Écriture (initialisation / mise à jour)

Déclaration
PROCÉDURE ORM_UserIdentification(
  LOCAL nUserID est un entier,
  LOCAL sUserName est une chaîne,
  LOCAL sComputerID est une chaîne
)
ParamètreTypeRôle
nUserIDentierIdentifiant unique de l'utilisateur dans le système.
sUserNamechaîneNom de l'utilisateur connecté (libellé d'affichage).
sComputerIDchaîneIdentifiant du poste de travail courant (typiquement nom machine, IP, ou identifiant métier du poste).

Cette variante ne retourne rien (procédure void). Elle écrase systématiquement les valeurs précédentes dans la session.

Variante 2 — Lecture

Déclaration
PROCÉDURE ORM_UserIdentification() : (entier, chaîne, chaîne)

Aucun paramètre. Retourne un triplet contenant les 3 informations courantes dans la session.

Élément retournéTypeDescription
nUserIDentierIdentifiant unique de l'utilisateur courant. 0 si jamais initialisé.
sUserNamechaîneNom de l'utilisateur courant. "" si jamais initialisé.
sComputerIDchaîneIdentifiant du poste de travail courant. "" si jamais initialisé.
03

🧭 Rôle des trois informations

Les trois valeurs gérées par ORM_UserIdentification ne sont pas seulement informatives : elles alimentent automatiquement plusieurs mécanismes du framework. Connaître leur rôle exact permet de bien dimensionner ce qu'on y met au moment de l'authentification.

InformationRôle dans le framework
nUserIDÉcrit dans la colonne SQL_ID_USER_INSERT de chaque enregistrement créé via les méthodes de persistance (si la valeur de cette colonne n'est pas déjà renseignée par l'appelant). Permet de tracer l'auteur de chaque INSERT en base. Typiquement la clé primaire de l'utilisateur dans la table des utilisateurs métier.
sUserNameConservé dans la session ORM pour usage applicatif (affichage IHM, logs métier, audit). N'est pas écrit en base par le framework — la traçabilité en base passe par nUserID (relation à la table des utilisateurs).
sComputerIDÉcrit dans la colonne SQL_IP_USER de chaque enregistrement créé via les méthodes de persistance (si non déjà renseignée par l'appelant). Permet de tracer le poste depuis lequel un INSERT a été fait. Format libre : nom NetBIOS, IP, identifiant métier de poste, etc.
⚠️ Initialisation préalable recommandée

Si l'application enregistre des données avant tout appel à la variante d'écriture, les colonnes SQL_ID_USER_INSERT et SQL_IP_USER seront alimentées avec les valeurs par défaut de la session (0 et "" respectivement). Ce n'est généralement pas le comportement souhaité — appeler ORM_UserIdentification en écriture au plus tôt dans l'initialisation de l'application est une bonne pratique systématique.

04

📤 Valeur de retour

VarianteRetour
Écriture (3 paramètres)Aucun (procédure void)
Lecture (sans paramètre)Triplet (nUserID, sUserName, sComputerID) contenant les valeurs courantes de la session

La variante de lecture retourne toujours un triplet valide — jamais d'erreur ou d'état d'absence. Si la variante d'écriture n'a jamais été appelée depuis le démarrage de l'application, le triplet retourné contient les valeurs par défaut (0, "", "").

05

💡 Exemples

Mode 1 — initialisation au démarrage après authentification

Cas d'usage typique : juste après l'écran de connexion, on positionne les 3 valeurs qui serviront toute la session.

// ── L'utilisateur vient de s'authentifier ─────────────────────── SI bAuthentificationOK ALORS // Récupérer les infos depuis le système d'authentification nID est un entier = clUtilisateurConnecté:m_ID_USER sNom est une chaîne = clUtilisateurConnecté:m_NOM_USER sPC est une chaîne = NomMachine() // Initialiser la session ORM ORM_UserIdentification(nID, sNom, sPC) // À partir d'ici, tous les INSERT du framework // auront SQL_ID_USER_INSERT et SQL_IP_USER renseignés automatiquement FIN

Mode 2 — lecture pour affichage IHM

Cas d'usage : afficher l'utilisateur courant dans une barre de statut.

// ── Récupération des 3 valeurs en une seule fois ──────────────── nUserID est un entier sUserName est une chaîne sPosteID est une chaîne (nUserID, sUserName, sPosteID) = ORM_UserIdentification() // ── Mise à jour de la barre de statut ─────────────────────────── LIB_StatusBar = sUserName + " — Poste " + sPosteID

Mode 3 — vérification d'initialisation

Cas d'usage : avant d'enregistrer des données critiques, vérifier que la session est bien initialisée.

// ── Lire l'état courant ───────────────────────────────────────── (nUserID, sUserName, sPosteID) = ORM_UserIdentification() SI nUserID = 0 ALORS Erreur("Session ORM non initialisée — appeler ORM_UserIdentification au démarrage") RETOUR FIN // ── Procéder aux enregistrements en toute sécurité ────────────── clCommande:mth_Enregistrer()

Mode 4 — changement d'utilisateur en cours de session

Cas d'usage : déconnexion / reconnexion sans relancer l'application.

// ── L'utilisateur courant se déconnecte, un autre se connecte ─── SI bDéconnexionDemandée ALORS // Repasser en valeurs par défaut le temps de l'écran de connexion ORM_UserIdentification(0, "", "") // Afficher l'écran d'authentification du nouvel utilisateur Ouvre(FEN_Authentification) // Une fois authentifié, repositionner les vraies valeurs SI bAuthentificationOK ALORS ORM_UserIdentification(nNouveauID, sNouveauNom, NomMachine()) FIN FIN