diff --git a/core/core.php b/core/core.php
index cd78292..513956c 100644
--- a/core/core.php
+++ b/core/core.php
@@ -51,7 +51,7 @@ class common
const ACCESS_TIMER = 1800;
// Numéro de version
- const ZWII_VERSION = '1.15.02';
+ const ZWII_VERSION = '1.15.03';
// URL autoupdate
const ZWII_UPDATE_URL = 'https://forge.chapril.org/ZwiiCMS-Team/campus-update/raw/branch/master/';
diff --git a/core/module/install/ressource/i18n/en_EN.json b/core/module/install/ressource/i18n/en_EN.json
index 824a837..16be19c 100644
--- a/core/module/install/ressource/i18n/en_EN.json
+++ b/core/module/install/ressource/i18n/en_EN.json
@@ -1,7 +1,7 @@
{
"'Ne pas afficher' crée une page orpheline non accessible par le biais des menus.": "'Do not display' creates an orphan page not accessible through menus.",
"'Sauvegarder et télécharger les données du module": "'Save and download module data",
- "1 jour": "1 jour",
+ "1 jour": "1 day",
"1/4 : Préparation...": "1/4: preparation ...",
"10 minutes": "10 minutes",
"10 tentatives": "10 attempts",
@@ -31,7 +31,7 @@
"Adaptation": "Adaptation",
"Administrateur": "Administrator",
"Administration": "Administration",
- "Adresse SMTP": "SMTP Address",
+ "Adresse SMTP": "SMTP address",
"Adresse du proxy": "Proxy address",
"Adresse électronique": "email address",
"Affectation": "Assignment",
@@ -60,10 +60,10 @@
"Archive copiée dans le dossier Modules du gestionnaire de fichier": "Archive copied in the Modules folder",
"Archive de thème invalide": "Invalid theme archive",
"Archive invalide": "Invalid archive",
- "Archive invalide, l'écriture dans le dossier core est interdite": "Invalid archive, writing in the core file is prohibited",
+ "Archive invalide, l'écriture dans le dossier core est interdite": "Invalid archive, writing in the core folder is prohibited",
"Archive invalide, le descripteur est absent": "Invalid archive, the descriptor is absent",
- "Archive invalide, le fichier de classe est absent": "Invalide archive, the class file is absent",
- "Archive invalide, les dossiers ne correspondent pas au descripteur": "Invalid archive, the files do not correspond to the descriptor",
+ "Archive invalide, le fichier de classe est absent": "Invalid archive, the class file is absent",
+ "Archive invalide, les dossiers ne correspondent pas au descripteur": "Invalid archive, the files do not match the descriptor",
"Archive non spécifiée ou introuvable": "Archive not specified or not found",
"Archive à restaurer": "Archive to restore",
"Arrière plan": "Background",
@@ -86,7 +86,7 @@
"Aucune liste noire à télécharger": "No blacklist to download",
"Auteur :": "Author:",
"Authentification": "Authentication",
- "Automatique": "Automatique",
+ "Automatique": "Automatic",
"Autoriser les robots à référencer le site": "Allow robots to reference the site",
"Autorisé": "Allowed",
"Avant la bannière": "Before the banner",
@@ -104,9 +104,9 @@
"Barre latérale": "Sidebar",
"Barre latérale droite :": "Right sidebar:",
"Barre latérale gauche :": "Left sidebar:",
- "Barres latérales": "Side bars",
+ "Barres latérales": "Sidebars",
"Bienvenue %s %s": "Welcome %s %s",
- "Blocage après échecs": "Blocking after chess",
+ "Blocage après échecs": "Blocking after failure",
"Blog": "Blog",
"Bords arrondis": "Rounded edges",
"Bordure des blocs": "Blocks border",
@@ -122,16 +122,16 @@
"Caché": "Hidden",
"Cachée": "Hidden",
"Captcha complexe": "Complex captcha",
- "Captcha à la connexion": "Captcha at connecting",
+ "Captcha à la connexion": "Captcha",
"Captcha, identifiant ou mot de passe incorrects": "Incorrect captcha, login or password",
"Capture d'écran Open Graph": "Open Graph screenshot",
"Capture d'écran générée avec succès": "Successful generated screenshot",
"Casse": "Case",
"Catalogue": "Store",
"Catégorie": "Category",
- "Ce membre pourra téléverser ou télécharger des fichiers dans le dossier 'partage' et ses sous-dossiers": "This member upload or download files in the 'Sharing' folder and its subfolders",
+ "Ce membre pourra téléverser ou télécharger des fichiers dans le dossier 'partage' et ses sous-dossiers": "This member can upload or download files in the 'Sharing' folder and its subfolders",
"Cette page ne doit pas apparaître dans l'arborescence du menu. Créez une page orpheline.": "This page should not appear in the menu tree. Create an orphan page.",
- "Cette redirection ne concerne que les pages d'administration du site.": "This redirection only concerns the administration pages of the site.",
+ "Cette redirection ne concerne que les pages d'administration du site.": "This redirection only concerns the site administration pages.",
"Chaîne Youtube": "Youtube channel",
"Chiffres": "Numbers",
"Cible": "Target",
@@ -158,8 +158,8 @@
"Consulter l'aide en ligne": "Online help",
"Contents": "Contents",
"Contenu": "Contents",
- "Contenu HTML": "HTML contents",
- "Contenu avancé": "Advanced contents",
+ "Contenu HTML": "HTML content",
+ "Contenu avancé": "Advanced content",
"Contenu du menu vertical": "Vertical menu content",
"Contrôle total": "Full control",
"Cookies": "Cookies",
@@ -174,7 +174,7 @@
"Couleur de fond automatique": "Automatic background color",
"Couleur icône haut de page": "Color of top page icon",
"Couleur texte page active": "Active page text color",
- "Couleur unie ou papier-peint": "United color or wallpaper",
+ "Couleur unie ou papier-peint": "Plain color or wallpaper",
"Couleur visible en l'absence d'une image.
Le curseur horizontal règle le niveau de transparence.": "Visible color in the absence of an image.
The horizontal cursor regulates the level of transparency.",
"Couleur visible en l'absence d'une image.
Le curseur horizontal règle le niveau de transparence. La couleur du texte est automatique.": "Visible color in the absence of an image.
The horizontal cursor regulates the level of transparency. The color of the text is automatic.",
"Couleurs": "Colors",
@@ -190,8 +190,8 @@
"Dossier": "Folder",
"Droits sur les dossiers": "Folder authorizations",
"Droits sur les fichiers": "File authorizations",
- "Dupliquer": "Duplicate",
- "Dupliquer la page": "Duplicate the page",
+ "Dupliquer": "Clone",
+ "Dupliquer la page": "Clone page",
"Déconnecte les sessions ouvertes précédemment sur d'autres navigateurs ou terminaux. Activation recommandée.": "Disconnects the previously opened sessions on other browsers or terminals. Recommended activation.",
"Déconnecter": "Disconnect",
"Déconnexion !": "Logout!",
@@ -199,7 +199,7 @@
"Définir par défaut": "Set as default",
"Dévoiler le mot de passe": "Reveal the password",
"Effacer": "Delete",
- "Effacer la page": "Delete the page",
+ "Effacer la page": "Delete page",
"Effacer tous les commentaires": "Delete all Comments",
"Effacer toutes les statistiques": "Delete all statistics",
"Effacer un commentaire": "Delete Comment",
@@ -212,9 +212,9 @@
"En cas de changement de module, les données du module précédent seront supprimées.": "In the event of a module change, data from the previous module will be deleted.",
"En dessous du site": "Below the site",
"En haut au centre": "Top in the center",
- "En haut à droite": "Top right",
- "En haut à gauche": "On the top corner left",
- "En position libre ajoutez le module en plaçant [MODULE] à l'endroit voulu dans votre page.": "In free position add the module by placing [module] to the desired location in your page.",
+ "En haut à droite": "Top right corner",
+ "En haut à gauche": "Top left corner",
+ "En position libre ajoutez le module en plaçant [MODULE] à l'endroit voulu dans votre page.": "In free position add the module by placing [MODULE] to the desired location in your page.",
"En-dehors du site": "Outside the site",
"Enregistrer": "Save",
"Envoyer un message de confirmation": "Send a confirmation message",
@@ -226,7 +226,7 @@
"Erreur de lecture, vérifiez les permissions": "Reading error, check permissions",
"Erreur inconnue": "unknown error",
"Erreur inconnue, le module n'est pas installé": "Unknown error, the module is not installed",
- "Export CSV": "Export CSV",
+ "Export CSV": "CSV Export",
"Expéditeur": "From",
"Extension": "Extension",
"Extraire": "Extract",
@@ -260,7 +260,7 @@
"Grande": "Large",
"Grande (220%)": "Grande (220%)",
"Grande (300px)": "Grande (300px)",
- "Gras": "Fetter",
+ "Gras": "Bold",
"Groupe": "Group",
"Groupe associé": "Associated Group",
"Groupe requis pour accéder à la page :": "Group required to access the page:",
@@ -318,7 +318,7 @@
"Journalisation": "Journalization",
"L'archive a été déposée dans le gestionnaire de fichiers. Les archives inférieures à la version 9 ne sont pas acceptées.": "The archive was deposited in the file manager. Archives below version 9 are not accepted.",
"L'identifiant est défini lors de la création du compte, il ne peut pas être modifié.": "The identifier is defined when creating the account, it cannot be changed.",
- "La carte du site a été mise à jour": "The site card has been updated",
+ "La carte du site a été mise à jour": "The sitemap has been updated",
"La copie de sauvegarde du fichier htaccess n'a pas été restaurée !": "Backup copy of htaccess file has not been restored!",
"La description d'une page participe à son référencement, chaque page doit disposer d'une description différente.": "The description of a page participates in its referencing, each page must have a different description.",
"La page %s est ouverte par l'utilisateur %s": "Page %s opened by user %s",
@@ -340,8 +340,8 @@
"Largeur": "Width",
"Largeur de l'image": "Image Width",
"Largeur du site": "Site Width",
- "Le curseur horizontal règle le niveau de transparence, le placer tout à la gauche pour un surlignement invisible.": "The horizontal cursor regulates the level of transparency, place it on the left for invisible highlights.",
- "Le curseur horizontal règle le niveau de transparence.": "The horizontal cursor regulates the level of transparency.",
+ "Le curseur horizontal règle le niveau de transparence, le placer tout à la gauche pour un surlignement invisible.": "The horizontal cursor sets the level of transparency, place it on the left for invisible highlights.",
+ "Le curseur horizontal règle le niveau de transparence.": "The horizontal cursor sets the level of transparency.",
"Le fuseau horaire est utile au bon référencement": "The time zone is useful for the right SEO",
"Le menu accessoire est aligné à droite de la barre de menu, c'est un emplacement réservé aux drapeaux et au bouton de connexion.": "The accessory menu is aligned to the right of the menu bar, it is a place reserved for flags and the login button.",
"Le menu horizontal intégral": "The full horizontal menu",
@@ -349,7 +349,7 @@
"Le module %s de la page %s a été supprimé": "The %s module of the %s has been deleted",
"Le module %s est désinstallé, il reste peut-être des données dans %s": "The module %s is uninstalled, there may be data in %s",
"Le sous-menu de la page parente": "The parent page submenu",
- "Le survol d'une icône de l'écran de connexion affiche temporairement le mot de passe.": "Flyover of an icon on the connection screen temporarily displays the password.",
+ "Le survol d'une icône de l'écran de connexion affiche temporairement le mot de passe.": "Hovering over a login screen icon temporarily displays the password",
"Le titre court est affiché dans les menus. Il peut être identique au titre de la page.": "The short title is displayed in the menus. It can be identical to the page title.",
"Les langues sélectionnées sont identiques": "The selected languages are identical",
"Les mentions légales sont obligatoires en France. Une option du pied de page ajoute un lien discret vers cette page.": "Legal notices are compulsory in France. An option of the footer adds a discrete link to this page.",
@@ -359,7 +359,7 @@
"Libre": "Libre",
"Licence :": "Licence:",
"Lien de connexion": "Login link",
- "Lien page des mentions légales.": "Link of legal notices.",
+ "Lien page des mentions légales.": "Link to legal notices.",
"Liens": "Links",
"Limitation des tentatives": "Limitation of attempts",
"Limitée au site": "Limited to the site",
@@ -371,7 +371,7 @@
"Légère": "Light",
"Maigre": "Lean",
"Maintenance": "Maintenance",
- "Majuscule à chaque mot": "Capper with each word",
+ "Majuscule à chaque mot": "Capitalize each word",
"Majuscules": "Capital letters",
"Marges verticales": "Vertical margins",
"Masquer la bannière en écran réduit": "Hide the banner in reduced screen",
@@ -405,20 +405,20 @@
"Modules installés": "Installed modules",
"Modules orphelins": "Orphaned modules",
"Mot de passe": "Password",
- "Mot de passe oublié": "Forgot your password",
+ "Mot de passe oublié": "Forgot password",
"Mot de passe perdu": "Lost password",
"Motorisé par": "Powered by",
"Moyen": "Medium",
"Moyenne": "Medium",
- "Moyenne (200%)": "Average (200%)",
- "Moyenne (200px)": "Average (200px)",
+ "Moyenne (200%)": "Medium (200%)",
+ "Moyenne (200px)": "Medium (200px)",
"Méta-description": "Meta-description",
"Méta-titre": "Meta title",
"Ne pas afficher": "Do not display",
"Ne pas charger l'exemple de site (utilisateurs avancés)": "Do not load the example of a site (advanced users)",
"Ne pas répéter": "Do not repeat",
"Ne pas saisir les balises": "Don't type tags",
- "News": "",
+ "News": "News",
"Niveau 1 (192.168.12.x)": "Level 1 (192.168.12.x)",
"Niveau 2 (192.168.x.x)": "Level 2 (192.168.x.x)",
"Niveau 3 (192.x.x.x)": "Level 3 (192.x.x.x)",
@@ -427,18 +427,18 @@
"Nom du profil": "Profile Name",
"Nom utilisateur": "Username",
"Non": "No",
- "Non tronquée": "Unmanned",
- "Notre site est actuellement en maintenance. Nous sommes désolés pour la gêne occasionnée et faisons notre possible pour être rapidement de retour.": "Our site is currently under maintenance. We are sorry for the inconvenience caused and do our best to be quickly back.",
+ "Non tronquée": "Untruncated",
+ "Notre site est actuellement en maintenance. Nous sommes désolés pour la gêne occasionnée et faisons notre possible pour être rapidement de retour.": "Our site is currently under maintenance. Sorry for the inconvenience and we do our best to be back soon.",
"Nouveau contenu localisé": "New localized content",
"Nouveau mot de passe": "New Password",
"Nouveau mot de passe enregistré": "New password recorded",
"Nouvel utilisateur": "New user",
"Nouvelle page créée": "New page created",
"Nouvelle page ou barre latérale": "New page or sidebar",
- "Obligatoire": "Missing",
+ "Obligatoire": "Required",
"Ombre": "Shadow",
"Option active en mode déconnecté uniquement, les pages enfants sont visibles et accessibles.": "Active option in disconnected mode only, children's pages are visible and accessible.",
- "Option recommandée pour sécuriser la connexion. S'applique à tous les captchas du site. Le captcha simple se limite à une addition de nombres de 0 à 10. Le captcha complexe utilise quatre opérations de nombres de 0 à 20. Activation recommandée.": "Recommended option to secure the connection. Applies to all the Captchas of the site. Simple Captcha is limited to an addition of numbers from 0 to 10. Complex Captcha uses four numbers of 0 to 20. Recommended activation.",
+ "Option recommandée pour sécuriser la connexion. S'applique à tous les captchas du site. Le captcha simple se limite à une addition de nombres de 0 à 10. Le captcha complexe utilise quatre opérations de nombres de 0 à 20. Activation recommandée.": "Recommended option to secure the connection. Applies to all the Captchas of the site. Simple Captcha is limited to an addition of numbers from 0 to 10. Complex Captcha uses four numbers from 0 to 20. Recommended activation.",
"Options": "Options",
"Options avancées": "Advanced options",
"Origine": "Origin",
@@ -450,7 +450,7 @@
"Page de recherche": "Search page",
"Page dupliquée": "Duplicate page",
"Page et module dupliqués": "Duplicated page and module",
- "Page inexistante, erreur 404": "Page non-existent, error 404",
+ "Page inexistante, erreur 404": "Non-existent page, error 404",
"Page non cliquable": "Non-clickable page",
"Page parent": "Parent page",
"Page standard": "Standard page",
@@ -476,7 +476,7 @@
"Permissions sur les pages": "Page Permissions",
"Petite": "Small",
"Petite (150px)": "Small (150px)",
- "Petite (180%)": "Petite (180%)",
+ "Petite (180%)": "Small (180%)",
"Pied de page": "Footer",
"Pinterest": "Pinterest",
"Plan du site": "Sitemap",
@@ -490,9 +490,9 @@
"Presse Papier": "Clipboard",
"Presse papier": "Clipboard",
"Profils des groupes": "Group Profiles",
- "Proportionnelle à la taille définie dans le site.": "Proportional to that defined in the site.",
+ "Proportionnelle à la taille définie dans le site.": "Proportional to the size defined in the site.",
"Prénom": "First name",
- "Prénom Nom": "Firstname name",
+ "Prénom Nom": "First name Name",
"Préparation de la mise à jour": "Preparation of the update",
"Préserver le fichier htaccess racine": "Preserve the root htaccess file",
"Préserver les comptes des utilisateurs déjà installés": "Preserve user accounts already installed",
@@ -579,7 +579,7 @@
"Sur les deux axes": "On both axes",
"Sécurité": "Security",
"Sécurité de la connexion": "Connection security",
- "Sécurité désactivée": "Safety deactivated",
+ "Sécurité désactivée": "Security disabled",
"Sélectionner un fichier": "Select a file",
"Sélectionnez au moins un contenu à afficher": "Select at least one content to display",
"Sélectionnez la langue à copier vers une langue cible": "Select the language to copy to a target language",
@@ -689,5 +689,18 @@
"Groupes / Profils": "Groups / Profiles",
"Prénom commence par": "First Name starts with",
"Nom commence par": "Last Name starts with",
- "Impossible de réinitialiser le mot de passe de ce compte !": "Impossible to reset this account password!"
+ "Impossible de réinitialiser le mot de passe de ce compte !": "Impossible to reset this account password!",
+ "Test de la messagerie du site": "Site messaging test",
+ "Il semblerait que votre messagerie fonctionne correctement !": "It seems that your messaging is working correctly!",
+ "Message de test envoyé avec succès": "Test message sent successfully",
+ "Message non envoyé": "Message not sent",
+ "Validation par clé ⚠️": "Key-based validation ⚠️",
+ "La connexion est confirmée à l'aide d'une clé transmise par messagerie. Depuis le groupe sélectionné et les groupes supérieurs.": "The connection is confirmed using a key sent via messaging. From the selected group and the higher groups.",
+ "Envoi du message d'authentification": "Sending authentication message",
+ "Connexion réussie": "Login successful",
+ "Erreur de mot de passe": "Password error",
+ "Erreur de captcha": "Captcha error",
+ "Clé envoyée par message": "Key sent via message",
+ "Message de test": "Test message",
+ "Clé d'authentification envoyée à votre adresse mail %s": "Authentication key sent to your email address %s"
}
\ No newline at end of file
diff --git a/core/module/install/ressource/i18n/es.json b/core/module/install/ressource/i18n/es.json
index ec68803..b54826f 100644
--- a/core/module/install/ressource/i18n/es.json
+++ b/core/module/install/ressource/i18n/es.json
@@ -1,7 +1,7 @@
{
"'Ne pas afficher' crée une page orpheline non accessible par le biais des menus.": "'No mostrar' crea una página huérfana a la que no se puede acceder a través de los menús.",
"'Sauvegarder et télécharger les données du module": "Guardar y descargar de los datos del módulo",
- "1 jour": "1 Jour",
+ "1 jour": "1 diaz",
"1/4 : Préparation...": "1/4: Preparando...",
"10 minutes": "10 minutos",
"10 tentatives": "6 intentos",
@@ -322,7 +322,7 @@
"La copie de sauvegarde du fichier htaccess n'a pas été restaurée !": "¡La copia de seguridad del archivo htaccess no ha sido restaurada!",
"La description d'une page participe à son référencement, chaque page doit disposer d'une description différente.": "La descripción de una página participa en su referenciación, cada página debe tener una descripción diferente.",
"La page %s est ouverte par l'utilisateur %s": "La página %s ha sido abierta por el usuario %s",
- "La page demandée n'existe pas ou est introuvable (erreur 404)": "La page demandée n'existe pas ou est introuvable (erreur 404)",
+ "La page demandée n'existe pas ou est introuvable (erreur 404)": "La página solicitada no existe o no se encuentra (error 404).",
"La page est affichée dans un menu horizontal mais pas dans le menu vertical d'une barre latérale.": "La página se muestra en un menú horizontal pero no en el menú vertical de una barra lateral.",
"La première page que vos visiteurs verront.": "La primera página que verán tus visitantes.",
"La règlementation française impose un anonymat de niveau 2": "La normativa francesa impone el anonimato de nivel 2",
@@ -476,7 +476,7 @@
"Permissions sur les pages": "Permisos de las páginas",
"Petite": "Pequeño",
"Petite (150px)": "Pequeño (150px)",
- "Petite (180%)": "Petite (180%)",
+ "Petite (180%)": "Pequeño (180px)",
"Pied de page": "Pie de página",
"Pinterest": "Pinterest",
"Plan du site": "Mapa del sitio",
@@ -689,5 +689,18 @@
"Groupes / Profils": "Grupos / Perfiles",
"Prénom commence par": "El nombre comienza con",
"Nom commence par": "El apellido comienza con",
- "Impossible de réinitialiser le mot de passe de ce compte !": "No puedo restablecer la contraseña de esta cuenta."
+ "Impossible de réinitialiser le mot de passe de ce compte !": "No puedo restablecer la contraseña de esta cuenta.",
+ "Test de la messagerie du site": "Prueba de mensajería del sitio",
+ "Il semblerait que votre messagerie fonctionne correctement !": "¡Parece que su mensajería funciona correctamente!",
+ "Message de test envoyé avec succès": "Mensaje de prueba enviado con éxito",
+ "Message non envoyé": "Mensaje no enviado",
+ "Validation par clé ⚠️": "Validación por clave ⚠️",
+ "La connexion est confirmée à l'aide d'une clé transmise par messagerie. Depuis le groupe sélectionné et les groupes supérieurs.": "La conexión se confirma con una clave enviada por mensajería. Desde el grupo seleccionado y los grupos superiores.",
+ "Envoi du message d'authentification": "Envío del mensaje de autenticación",
+ "Connexion réussie": "Conexión exitosa",
+ "Erreur de mot de passe": "Error de contraseña",
+ "Erreur de captcha": "Error de captcha",
+ "Clé envoyée par message": "Clave enviada por mensaje",
+ "Message de test": "Mensaje de prueba",
+ "Clé d'authentification envoyée à votre adresse mail %s": "Clave de autenticación enviada a su dirección de correo electrónico %s"
}
\ No newline at end of file
diff --git a/core/module/install/ressource/i18n/fr_FR.json b/core/module/install/ressource/i18n/fr_FR.json
index e89a421..475820b 100644
--- a/core/module/install/ressource/i18n/fr_FR.json
+++ b/core/module/install/ressource/i18n/fr_FR.json
@@ -689,5 +689,18 @@
"Groupes / Profils": "",
"Prénom commence par": "",
"Nom commence par": "",
- "Impossible de réinitialiser le mot de passe de ce compte !": ""
+ "Impossible de réinitialiser le mot de passe de ce compte !": "",
+ "Test de la messagerie du site": "",
+ "Il semblerait que votre messagerie fonctionne correctement !": "",
+ "Message de test envoyé avec succès": "",
+ "Message non envoyé": "",
+ "Validation par clé ⚠️": "",
+ "La connexion est confirmée à l'aide d'une clé transmise par messagerie. Depuis le groupe sélectionné et les groupes supérieurs.": "",
+ "Envoi du message d'authentification": "",
+ "Connexion réussie": "",
+ "Erreur de mot de passe": "",
+ "Erreur de captcha": "",
+ "Clé envoyée par message": "",
+ "Message de test": "",
+ "Clé d'authentification envoyée à votre adresse mail %s": ""
}
\ No newline at end of file
diff --git a/core/module/user/user.php b/core/module/user/user.php
index f9ac8df..d99019b 100644
--- a/core/module/user/user.php
+++ b/core/module/user/user.php
@@ -1240,6 +1240,7 @@ class user extends common
) {
// Lire Id du compte
$userId = $this->getInput('userLoginId', helper::FILTER_ID, true);
+ $notification = '';
// Check le captcha
if (
$this->getData(['config', 'connect', 'captcha'])
@@ -1353,11 +1354,13 @@ class user extends common
// L'email a été envoyé avec succès, redirection vers la page de double authentification
if ($sent === true) {
+ // Journalisation
$logStatus = helper::translate('Envoi du message d\'authentification');
// Redirection vers la page d'authentification
$authRedirect = 'user/auth/';
// Stocker la clé envoyée par email
$this->setData(['user', $userId, 'authKey', $keyByMail]);
+ $notification = sprintf('Clé d\'authentification envoyée à votre adresse mail %s', $this->getData(['user', $userId, 'mail']));
} else {
// Impossible d'envoyer le message
// Double authentification désactivée
@@ -1365,9 +1368,11 @@ class user extends common
$this->setData(['user', $userId, 'authKey', $authKey]);
// Journalisation
$this->saveLog($sent);
+ $notification = sprintf(helper::translate('Bienvenue %s %s'), $this->getData(['user', $userId, 'firstname']), $this->getData(['user', $userId, 'lastname']));
}
} else {
$logStatus = helper::translate('Connexion réussie');
+ $notification = sprintf(helper::translate('Bienvenue %s %s'), $this->getData(['user', $userId, 'firstname']), $this->getData(['user', $userId, 'lastname']));
$this->setData(['user', $userId, 'authKey', $authKey]);
}
@@ -1402,7 +1407,7 @@ class user extends common
$redirect = ($pageId && strpos($pageId, 'user_reset') !== 0) ? helper::baseUrl() . $authRedirect . str_replace('_', '/', str_replace('__', '#', $pageId)) : helper::baseUrl() . $authRedirect;
// Valeurs en sortie
$this->addOutput([
- 'notification' => sprintf(helper::translate('Bienvenue %s %s'), $this->getData(['user', $userId, 'firstname']), $this->getData(['user', $userId, 'lastname'])),
+ 'notification' => $notification,
'redirect' => $redirect,
'state' => true
]);
@@ -1462,24 +1467,24 @@ class user extends common
// Vérifier la clé saisie
$targetKey = $this->getData(['user', $this->getUser('id'), 'authKey']);
$inputKey = $this->getInput('userAuthKey', helper::FILTER_INT);
+ // Redirection
+ $pageId = $this->getUrl(2);
+ $redirect = $pageId? helper::baseUrl() . $pageId : helper::baseUrl() ;
if (
// La clé est valide ou le message n'ayant pas été expédié, la double authentification est désactivée
$targetKey === $inputKey || $this->getData(['config', 'connect', 'mailAuth', 0]) === 0
) {
-
- // Redirection
- $pageId = $this->getUrl(2);
+
// La fiche de l'utilisateur contient la clé d'authentification
$this->setData(['user', $this->getUser('id'), 'authKey', $this->getInput('ZWII_AUTH_KEY')]);
- $redirect = ($pageId && strpos($pageId, 'user_reset') !== 0) ? helper::baseUrl() . str_replace('_', '/', str_replace('__', '#', $pageId)) : helper::baseUrl();
// Journalisation
$this->saveLog('Connexion réussie');
- // Réinitialiser le compteur de temps
- $this->setData(['user', $this->getUser('id'), 'connectTimeout', 0]);
+ // Utilisateur connecté
+ $userId = $this->getUser('id');
// Valeurs en sortie
$this->addOutput([
'redirect' => $redirect,
- 'notification' => helper::translate('Connexion réussie'),
+ 'notification' => sprintf(helper::translate('Bienvenue %s %s'), $this->getData(['user', $userId, 'firstname']), $this->getData(['user', $userId, 'lastname'])),
'state' => true
]);
} else {
@@ -1498,10 +1503,9 @@ class user extends common
// Journalisation
$this->saveLog('Erreur de vérification de la clé envoyée par email ' . $this->getUser('id'));
-
// Valeurs en sortie
$this->addOutput([
- 'redirect' => helper::baseUrl() . 'user/auth',
+ 'redirect' => $redirect,
'notification' => helper::translate('La clé est incorrecte'),
'state' => false
]);
@@ -1517,6 +1521,7 @@ class user extends common
}
+
/**
* Déconnexion
*/
diff --git a/core/module/user/view/auth/auth.php b/core/module/user/view/auth/auth.php
index fdcc801..e301fda 100644
--- a/core/module/user/view/auth/auth.php
+++ b/core/module/user/view/auth/auth.php
@@ -9,8 +9,8 @@