mirror of
https://github.com/JMP-MS/ASPIC.git
synced 2026-10-27 16:07:10 +00:00
V1.15.17 Evolutions des consignes
This commit is contained in:
+36
-8
@@ -20,6 +20,27 @@
|
||||
* `aspic.php`) — le champ REA_CodeUser du corps de la requête POST n'est
|
||||
* plus utilisé et ne peut plus être falsifié par le client. Le "JMP" en dur
|
||||
* précédent a été supprimé (n'avait de sens que faute de session).
|
||||
*
|
||||
* REA_NomAffiche (7 septembre 2026, nuit) : Jean-Marc voulait voir "Jean-Marc"
|
||||
* plutôt que "JMP" dans l'historique d'un contact. Deux idées écartées en
|
||||
* cours de route : renommer USR_Code lui-même (trop structurant, utilisé
|
||||
* partout — session, REA_CodeUser, OPE_CodeUser...), et une jointure
|
||||
* ASP_Users refaite à chaque affichage (Jean-Marc : "comment vas-tu faire
|
||||
* pour les agents qui sont dans une autre base ?" — une jointure suppose que
|
||||
* tout vit dans la même base, hypothèse fragile). Solution retenue, dans les
|
||||
* mots de Jean-Marc : "si on stocke le prénom de l'utilisateur d'un côté et
|
||||
* le prénom de l'agent en dur on est cool" — un INSTANTANÉ pris UNE SEULE
|
||||
* FOIS à la création de la réalisation, jamais recalculé :
|
||||
* - Utilisateur humain : REA_NomAffiche = $_SESSION['USR_Prenom'], lui-même
|
||||
* posé une seule fois à la connexion (voir aspic.php) — aucune requête
|
||||
* supplémentaire ici, juste une lecture de session.
|
||||
* - Agent IA : REA_NomAffiche = le nom déjà en clair (CNS_Agent, voir
|
||||
* moteur_consignes.php et journaliserRealisationsIA() dans contacts.php) —
|
||||
* "en dur", aucune recherche à faire, la valeur existe déjà.
|
||||
* Nullable : une ligne plus ancienne, créée avant l'ajout de cette colonne,
|
||||
* n'en a pas — le front-end retombe alors sur REA_CodeUser tel quel (voir
|
||||
* liste_contacts.html, même principe que ACT_Libelle/REA_Action juste à
|
||||
* côté).
|
||||
*/
|
||||
|
||||
session_start();
|
||||
@@ -50,9 +71,12 @@ try {
|
||||
echo json_encode(['error' => 'id (REA_IncrContact) manquant']);
|
||||
exit;
|
||||
}
|
||||
// REA_NomAffiche lu directement (voir commentaire d'en-tête) :
|
||||
// aucune jointure nécessaire, la colonne porte déjà la bonne
|
||||
// valeur depuis la création de la réalisation.
|
||||
$stmt = $pdo->prepare(
|
||||
'SELECT r.REA_Incr, r.REA_Date, r.REA_CodeUser, r.REA_Action, r.REA_Comment,
|
||||
a.ACT_Libelle
|
||||
'SELECT r.REA_Incr, r.REA_Date, r.REA_CodeUser, r.REA_NomAffiche,
|
||||
r.REA_Action, r.REA_Comment, a.ACT_Libelle
|
||||
FROM ASP_Realisations r
|
||||
LEFT JOIN ASP_Actions a ON a.ACT_Code = r.REA_Action
|
||||
WHERE r.REA_IncrContact = ?
|
||||
@@ -72,17 +96,21 @@ try {
|
||||
exit;
|
||||
}
|
||||
|
||||
// REA_CodeUser vient de la session (voir en-tête de ce fichier),
|
||||
// plus du corps de la requête : impossible pour le client de se
|
||||
// faire passer pour un autre utilisateur.
|
||||
// REA_CodeUser ET REA_NomAffiche viennent tous les deux de la
|
||||
// session (voir en-tête de ce fichier) — jamais du corps de la
|
||||
// requête, impossible pour le client de se faire passer pour un
|
||||
// autre utilisateur. REA_NomAffiche = USR_Prenom posé une seule
|
||||
// fois à la connexion (aspic.php) : aucune requête supplémentaire
|
||||
// ici.
|
||||
$codeUser = $_SESSION['USR_Code'];
|
||||
$nomAffiche = $_SESSION['USR_Prenom'] ?? null;
|
||||
$commentaire = $data['REA_Comment'] ?? '';
|
||||
|
||||
$stmt = $pdo->prepare(
|
||||
'INSERT INTO ASP_Realisations (REA_IncrContact, REA_CodeUser, REA_Date, REA_Action, REA_Comment)
|
||||
VALUES (?, ?, NOW(), ?, ?)'
|
||||
'INSERT INTO ASP_Realisations (REA_IncrContact, REA_CodeUser, REA_NomAffiche, REA_Date, REA_Action, REA_Comment)
|
||||
VALUES (?, ?, ?, NOW(), ?, ?)'
|
||||
);
|
||||
$stmt->execute([$idContact, $codeUser, $action, $commentaire]);
|
||||
$stmt->execute([$idContact, $codeUser, $nomAffiche, $action, $commentaire]);
|
||||
echo json_encode(['id' => (int)$pdo->lastInsertId()]);
|
||||
break;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user