2.2 register
This commit is contained in:
parent
c38bd7d12f
commit
6128d0778d
@ -0,0 +1,7 @@
|
|||||||
|
# Version 2.2
|
||||||
|
- Ajoute la gestion des profils
|
||||||
|
# Version 2.1
|
||||||
|
- N'envoie pas d'email lorsque le domaine est invalide.
|
||||||
|
- Corrige la validation de domaines multiples séparés par des points virgules.
|
||||||
|
# Version 2.0
|
||||||
|
- trop de corrections.
|
@ -1 +1 @@
|
|||||||
{"name":"suscribe","realName":"Auto inscription","version":"2.00","update":"0.0","delete":true,"dataDirectory":""}
|
{"name":"suscribe","realName":"Auto Inscription","version":"2.1","update":"0.0","delete":true,"dataDirectory":""}
|
@ -15,7 +15,7 @@
|
|||||||
class suscribe extends common
|
class suscribe extends common
|
||||||
{
|
{
|
||||||
|
|
||||||
const VERSION = '2.0';
|
const VERSION = '2.2';
|
||||||
const REALNAME = 'Auto Inscription';
|
const REALNAME = 'Auto Inscription';
|
||||||
const DELETE = true;
|
const DELETE = true;
|
||||||
const UPDATE = '0.0';
|
const UPDATE = '0.0';
|
||||||
@ -249,107 +249,121 @@ class suscribe extends common
|
|||||||
) {
|
) {
|
||||||
// Contrôler la validité du domaine saisi parmi les domaines valides
|
// Contrôler la validité du domaine saisi parmi les domaines valides
|
||||||
$email_to_check = $this->getInput('registrationAddMail', helper::FILTER_MAIL, true);
|
$email_to_check = $this->getInput('registrationAddMail', helper::FILTER_MAIL, true);
|
||||||
$valid_domains[] = strpos($this->getData(['module', $this->getUrl(0), 'config', 'filter']), ';') === false
|
|
||||||
? $this->getData(['module', $this->getUrl(0), 'config', 'filter'])
|
// Récupérer la liste des domaines valides depuis la configuration et supprimer les espaces autour
|
||||||
: explode(';', $this->getData(['module', $this->getUrl(0), 'config', 'filter']));
|
$filter = trim($this->getData(['module', $this->getUrl(0), 'config', 'filter']));
|
||||||
if (in_array(explode('@', $email_to_check)[1], $valid_domains) === false) {
|
|
||||||
|
// Vérifier si la liste contient plusieurs domaines ou un seul, puis supprimer les espaces pour chaque domaine
|
||||||
|
$valid_domains = strpos($filter, ';') === false
|
||||||
|
? [trim($filter)] // Si un seul domaine, on supprime les espaces et on le met dans un tableau
|
||||||
|
: array_map('trim', explode(';', $filter)); // Si plusieurs domaines, on les explose en tableau et supprime les espaces
|
||||||
|
|
||||||
|
// Extraire le domaine de l'adresse email à vérifier
|
||||||
|
$email_domain = explode('@', $email_to_check)[1];
|
||||||
|
|
||||||
|
// Vérifier si le domaine de l'email est dans la liste des domaines valides
|
||||||
|
if (!in_array($email_domain, $valid_domains)) {
|
||||||
self::$inputNotices['registrationAddMail'] = 'Ce domaine n\'est pas autorisé';
|
self::$inputNotices['registrationAddMail'] = 'Ce domaine n\'est pas autorisé';
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
// Drapeau de contrôle des données saisies.
|
// Email valide, on continue le traitement
|
||||||
$check = true;
|
if (self::$inputNotices === []) {
|
||||||
$sentMailtoUser = false;
|
// Drapeau de contrôle des données saisies.
|
||||||
// L'identifiant d'utilisateur est indisponible
|
$check = true;
|
||||||
$userId = $this->getInput('registrationAddId', helper::FILTER_ID, true);
|
$sentMailtoUser = false;
|
||||||
if (is_array($this->getData(['user', $userId]))) {
|
// L'identifiant d'utilisateur est indisponible
|
||||||
self::$inputNotices['registrationAddId'] = 'Identifiant invalide';
|
$userId = $this->getInput('registrationAddId', helper::FILTER_ID, true);
|
||||||
$check = false;
|
if (is_array($this->getData(['user', $userId]))) {
|
||||||
}
|
self::$inputNotices['registrationAddId'] = 'Identifiant invalide';
|
||||||
// Le compte existe déjà
|
|
||||||
foreach ($this->getData(['user']) as $usersId => $user) {
|
|
||||||
if ($user['mail'] === $this->getInput('registrationAddMail', helper::FILTER_MAIL, true)) {
|
|
||||||
self::$inputNotices['registrationAddMail'] = 'Vous ne pouvez pas utilisez cette boite mail';
|
|
||||||
$check = false;
|
$check = false;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
// Le compte existe déjà
|
||||||
// Données de l'utilisateur
|
foreach ($this->getData(['user']) as $usersId => $user) {
|
||||||
$userFirstname = $this->getInput('registrationAddFirstname', helper::FILTER_STRING_SHORT, true);
|
if ($user['mail'] === $this->getInput('registrationAddMail', helper::FILTER_MAIL, true)) {
|
||||||
$userLastname = $this->getInput('registrationAddLastname', helper::FILTER_STRING_SHORT, true);
|
self::$inputNotices['registrationAddMail'] = 'Vous ne pouvez pas utilisez cette boite mail';
|
||||||
$userMail = $this->getInput('registrationAddMail', helper::FILTER_MAIL, true);
|
$check = false;
|
||||||
// Pas de nom saisi
|
break;
|
||||||
if (
|
|
||||||
empty($userFirstname) ||
|
|
||||||
empty($userLastname)
|
|
||||||
) {
|
|
||||||
$check = false;
|
|
||||||
}
|
|
||||||
// Si tout est ok
|
|
||||||
if ($check === true) {
|
|
||||||
// Enregistrement du compte dans les données du module
|
|
||||||
$auth = uniqid('', true);
|
|
||||||
$this->setData([
|
|
||||||
'module',
|
|
||||||
$this->getUrl(0),
|
|
||||||
'users',
|
|
||||||
$userId,
|
|
||||||
[
|
|
||||||
'firstname' => $userFirstname,
|
|
||||||
'lastname' => $userLastname,
|
|
||||||
'mail' => $userMail,
|
|
||||||
'password' => '',
|
|
||||||
// pas de groupe afin de le différencier dans la liste des users
|
|
||||||
'timer' => time(),
|
|
||||||
'auth' => $auth,
|
|
||||||
'status' => self::STATUS_EMAIL_AWAITING
|
|
||||||
]
|
|
||||||
]);
|
|
||||||
// Mail d'avertissement aux administrateurs
|
|
||||||
// Utilisateurs dans le groupe admin
|
|
||||||
$to = [];
|
|
||||||
foreach ($this->getData(['user']) as $key => $user) {
|
|
||||||
if ($user['group'] == self::GROUP_ADMIN) {
|
|
||||||
$to[] = $user['mail'];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Envoi du mail à l'administrateur
|
// Données de l'utilisateur
|
||||||
if ($check && is_array($to)) {
|
$userFirstname = $this->getInput('registrationAddFirstname', helper::FILTER_STRING_SHORT, true);
|
||||||
$this->sendMail(
|
$userLastname = $this->getInput('registrationAddLastname', helper::FILTER_STRING_SHORT, true);
|
||||||
$to,
|
$userMail = $this->getInput('registrationAddMail', helper::FILTER_MAIL, true);
|
||||||
'Auto-inscription sur le site ' . $this->getData(['config', 'title']),
|
// Pas de nom saisi
|
||||||
'<p>Un nouveau membre s\'est inscrit, son email est en attente de validation</p>' .
|
if (
|
||||||
'<p><strong>Identifiant du compte :</strong> ' . $userId . ' (' . $userFirstname . ' ' . $userLastname . ')<br>' .
|
empty($userFirstname) ||
|
||||||
'<strong>Email :</strong> ' . $userMail . '</p>' .
|
empty($userLastname)
|
||||||
'<a href="' . helper::baseUrl() . 'user/login/' . strip_tags(str_replace('/', '_', $this->getUrl(0) . '/users')) . '">Validation de l\'inscription</a>',
|
) {
|
||||||
null,
|
$check = false;
|
||||||
$this->getData(['config', 'smtp', 'from'])
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
// Si tout est ok
|
||||||
|
if ($check === true) {
|
||||||
|
// Enregistrement du compte dans les données du module
|
||||||
|
$auth = uniqid('', true);
|
||||||
|
$this->setData([
|
||||||
|
'module',
|
||||||
|
$this->getUrl(0),
|
||||||
|
'users',
|
||||||
|
$userId,
|
||||||
|
[
|
||||||
|
'firstname' => $userFirstname,
|
||||||
|
'lastname' => $userLastname,
|
||||||
|
'mail' => $userMail,
|
||||||
|
'password' => '',
|
||||||
|
// pas de groupe afin de le différencier dans la liste des users
|
||||||
|
'timer' => time(),
|
||||||
|
'auth' => $auth,
|
||||||
|
'status' => self::STATUS_EMAIL_AWAITING
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
// Mail d'avertissement aux administrateurs
|
||||||
|
// Utilisateurs dans le groupe admin
|
||||||
|
$to = [];
|
||||||
|
foreach ($this->getData(['user']) as $key => $user) {
|
||||||
|
if ($user['group'] == self::GROUP_ADMIN) {
|
||||||
|
$to[] = $user['mail'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Envoi du mail à l'administrateur
|
||||||
|
if ($check && is_array($to)) {
|
||||||
|
$this->sendMail(
|
||||||
|
$to,
|
||||||
|
'Auto-inscription sur le site ' . $this->getData(['config', 'title']),
|
||||||
|
'<p>Un nouveau membre s\'est inscrit, son email est en attente de validation</p>' .
|
||||||
|
'<p><strong>Identifiant du compte :</strong> ' . $userId . ' (' . $userFirstname . ' ' . $userLastname . ')<br>' .
|
||||||
|
'<strong>Email :</strong> ' . $userMail . '</p>' .
|
||||||
|
'<a href="' . helper::baseUrl() . 'user/login/' . strip_tags(str_replace('/', '_', $this->getUrl(0) . '/users')) . '">Validation de l\'inscription</a>',
|
||||||
|
null,
|
||||||
|
$this->getData(['config', 'smtp', 'from'])
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// Mail de confirmation à l'utilisateur
|
// Mail de confirmation à l'utilisateur
|
||||||
// forger le lien de vérification
|
// forger le lien de vérification
|
||||||
$validateLink = helper::baseUrl(true) . $this->getUrl() . '/validate/' . $userId . '/' . $auth;
|
$validateLink = helper::baseUrl(true) . $this->getUrl() . '/validate/' . $userId . '/' . $auth;
|
||||||
// Envoi
|
// Envoi
|
||||||
if ($check) {
|
if ($check) {
|
||||||
$sentMailtoUser = $this->sendMail(
|
$sentMailtoUser = $this->sendMail(
|
||||||
$userMail,
|
$userMail,
|
||||||
'Confirmation de votre inscription',
|
'Confirmation de votre inscription',
|
||||||
'<p>' . $this->getdata(['module', $this->getUrl(0), 'config', 'mailRegisterContent']) . '</p>' .
|
'<p>' . $this->getdata(['module', $this->getUrl(0), 'config', 'mailRegisterContent']) . '</p>' .
|
||||||
'<p><a href="' . $validateLink . '">Activer votre compte<a/>' . '</p>' .
|
'<p><a href="' . $validateLink . '">Activer votre compte<a/>' . '</p>' .
|
||||||
'<p>ou copiez collez le lien suivant dans un navigateur : ' . $validateLink . '</p>'
|
'<p>ou copiez collez le lien suivant dans un navigateur : ' . $validateLink . '</p>'
|
||||||
,
|
,
|
||||||
null,
|
null,
|
||||||
$this->getData(['config', 'smtp', 'from'])
|
$this->getData(['config', 'smtp', 'from'])
|
||||||
);
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
// Valeurs en sortie
|
||||||
|
$this->addOutput([
|
||||||
|
'redirect' => helper::baseUrl(),
|
||||||
|
//'redirect' => $validateLink,
|
||||||
|
'notification' => $sentMailtoUser ? "Un mail vous a été envoyé." : 'Quelque chose n\'a pas fonctionné !',
|
||||||
|
'state' => $sentMailtoUser ? true : false
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
// Valeurs en sortie
|
|
||||||
$this->addOutput([
|
|
||||||
'redirect' => helper::baseUrl(),
|
|
||||||
//'redirect' => $validateLink,
|
|
||||||
'notification' => $sentMailtoUser ? "Un mail vous a été envoyé." : 'Quelque chose n\'a pas fonctionné !',
|
|
||||||
'state' => $sentMailtoUser ? true : false
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
|
Loading…
Reference in New Issue
Block a user