mirror of
https://github.com/JMP-MS/ASPIC.git
synced 2026-08-28 22:23:14 +00:00
87 lines
2.9 KiB
PHP
87 lines
2.9 KiB
PHP
<?php
|
|
// prospects_verifier.php
|
|
// Point d'entrée public (clic sur le lien reçu par mail) : valide l'adresse mail
|
|
// d'un prospect à partir de son token, quelle que soit la campagne d'origine,
|
|
// puis envoie automatiquement la documentation par défaut de cette campagne.
|
|
|
|
require __DIR__ . '/prospects_core.php';
|
|
|
|
header('Content-Type: text/html; charset=utf-8');
|
|
|
|
function pageMessage(string $texte): void
|
|
{
|
|
echo '<!doctype html><html lang="fr"><head><meta charset="utf-8">'
|
|
. '<title>ASPIC - Vérification</title></head>'
|
|
. '<body style="font-family:sans-serif;max-width:480px;margin:80px auto;text-align:center;">'
|
|
. '<p>' . htmlspecialchars($texte) . '</p>'
|
|
. '</body></html>';
|
|
}
|
|
|
|
$token = $_GET['token'] ?? '';
|
|
if ($token === '') {
|
|
http_response_code(400);
|
|
pageMessage('Lien de vérification invalide.');
|
|
exit;
|
|
}
|
|
|
|
$pdo = getDbConnection();
|
|
$stmt = $pdo->prepare(
|
|
'SELECT PSP_Incr, PSP_Prenom, PSP_Nom, PSP_Mail, PSP_CodeCampagne, PSP_TokenExpiration
|
|
FROM ASP_Prospects
|
|
WHERE PSP_TokenVerification = ? AND PSP_MailVerifie = 0 AND PSP_Actif = 1'
|
|
);
|
|
$stmt->execute([$token]);
|
|
$prospect = $stmt->fetch();
|
|
|
|
if (!$prospect) {
|
|
pageMessage('Ce lien de vérification est invalide ou a déjà été utilisé.');
|
|
exit;
|
|
}
|
|
|
|
if (strtotime($prospect['PSP_TokenExpiration']) < time()) {
|
|
pageMessage('Ce lien de vérification a expiré.');
|
|
exit;
|
|
}
|
|
|
|
$idProspect = (int) $prospect['PSP_Incr'];
|
|
$codeCampagne = $prospect['PSP_CodeCampagne'];
|
|
|
|
$pdo->prepare(
|
|
'UPDATE ASP_Prospects
|
|
SET PSP_MailVerifie = 1, PSP_TokenVerification = NULL, PSP_TokenExpiration = NULL
|
|
WHERE PSP_Incr = ?'
|
|
)->execute([$idProspect]);
|
|
|
|
journaliserOperation($idProspect, $codeCampagne . '-VAL');
|
|
|
|
// Envoi automatique de la doc par défaut de la campagne, si elle en a une de définie.
|
|
$stmt = $pdo->prepare('SELECT CMP_Incr, CMP_DocDefaut FROM ASP_Campagnes WHERE CMP_CodeCampagne = ?');
|
|
$stmt->execute([$codeCampagne]);
|
|
$campagne = $stmt->fetch();
|
|
|
|
if ($campagne && $campagne['CMP_DocDefaut']) {
|
|
$idDoc = (int) $campagne['CMP_DocDefaut'];
|
|
$idCampagneIncr = (int) $campagne['CMP_Incr'];
|
|
|
|
$stmt = $pdo->prepare('SELECT DOC_Libelle FROM ASP_Docs WHERE DOC_Incr = ?');
|
|
$stmt->execute([$idDoc]);
|
|
$doc = $stmt->fetch();
|
|
|
|
if ($doc) {
|
|
$lien = genererLienDoc($idProspect, $idDoc, $idCampagneIncr);
|
|
$envoiOk = envoyerMail($codeCampagne . '-DOC', $prospect['PSP_Mail'], [
|
|
'Prenom' => $prospect['PSP_Prenom'],
|
|
'Nom' => $prospect['PSP_Nom'],
|
|
'Lien' => $lien,
|
|
'Titre' => $doc['DOC_Libelle'],
|
|
]);
|
|
if ($envoiOk) {
|
|
journaliserOperation($idProspect, $codeCampagne . '-DOC');
|
|
} else {
|
|
error_log("ASPIC prospects: échec envoi mail de doc pour le prospect $idProspect");
|
|
}
|
|
}
|
|
}
|
|
|
|
pageMessage('Merci, votre adresse mail est vérifiée ! Vous allez recevoir notre documentation très prochainement.');
|