Revue processus inscription (avec parrainage)
This commit is contained in:
parent
e417dbb7a5
commit
1c056db3bd
@ -206,13 +206,13 @@ exports.signup = async (req, res, next) =>
|
||||
req.body.password=await bcrypt.hash(req.body.password, config.bcryptSaltRounds);
|
||||
const user=await db["User"].create({ ...req.body }, { fields: ["name", "email", "password", "newsletterOk", "GodfatherId", "timeDifference"] });
|
||||
req.body.UserId=user.id;
|
||||
// l'utilisateur a répondu à un quiz avant de créer son compte. On enregistre ses résultats.
|
||||
// si l'utilisateur a répondu à un quiz avant de créer son compte, on enregistre son résultats.
|
||||
if(req.body.QuestionnaireId)
|
||||
{
|
||||
await Promise.all([
|
||||
db["QuestionnaireAccess"].create({ ...req.body }, { fields: ["QuestionnaireId", "UserId"] }),
|
||||
db["Answer"].create({ ...req.body }, { fields: ["nbQuestions", "nbCorrectAnswers", "duration", "QuestionnaireId", "UserId"] })
|
||||
]); // pas nécessaire ici de créer le cache, car normalement il sera créé lors du premier appel
|
||||
]); // pas nécessaire ici de créer le cache JSON, car il sera créé lors de la première connexion au compte.
|
||||
}
|
||||
await sendValidationLink(user);
|
||||
res.status(201).json({ message: txt.mailValidationMessage });
|
||||
@ -257,7 +257,7 @@ exports.signupValidation = async (req, res, next) =>
|
||||
EMAIL : config.senderEmail,
|
||||
LINK_URL : config.siteUrl+"/"+configTpl.connectionPage
|
||||
};
|
||||
const mailDatas=
|
||||
const mailDatas =
|
||||
{
|
||||
mailSubject: txt.mailWelcomeSubject,
|
||||
mailPreheader: txt.mailWelcomeSubject,
|
||||
@ -463,7 +463,6 @@ exports.checkLoginLink = async (req, res, next) =>
|
||||
try
|
||||
{
|
||||
const db = require("../models/index");
|
||||
console.log(req);
|
||||
const userDatas= await checkTokenUser(req.body.t);
|
||||
if(userDatas.User.status!=="user")
|
||||
res.status(403).json({ errors: [txtGeneral.notAllowed] });
|
||||
@ -540,7 +539,6 @@ exports.modify = async (req, res, next) =>
|
||||
messageRetour.push(txt.updatedNeedUniqueEmail.replace("NEW_EMAIL", req.body.email));
|
||||
else
|
||||
newLogin.email=req.body.email;
|
||||
console.log(messageRetour);
|
||||
}
|
||||
}
|
||||
if(req.body.newPassword)
|
||||
|
@ -30,7 +30,7 @@
|
||||
<div id="prompt" class="cardboard">
|
||||
<a href="/" title="Page d'accueil WikLerni"><img src="/themes/wikilerni/img/wikilerni-purple-2-512.png" alt="Logo WikiLerni" title="W I K I L E R N I" /></a>
|
||||
<p class="cardboard">Cultivons notre jardin !</p>
|
||||
<div id="response" class="error">Si vous voyez ce message, c'est que votre lien de validation n'est pas valide ou a expiré. Vous pouvez <a href="/connexion.html">en recevoir un nouveau en cliquant ici</a>.</div>
|
||||
<div id="response">Si vous voyez ce message, c'est que votre lien de validation n'est pas valide ou a expiré. Vous pouvez <a href="/connexion.html">en recevoir un nouveau en cliquant ici</a>.</div>
|
||||
</div>
|
||||
|
||||
<footer class="cardboard">
|
||||
|
@ -10,7 +10,7 @@ const lang=availableLangs[0];
|
||||
const configTemplate = require("../../views/"+theme+"/config/"+lang+".js");
|
||||
const configUsers = require("../../config/users");
|
||||
|
||||
// Importation des fonctions utile au script :
|
||||
// Importation des fonctions utiles au script :
|
||||
import { getLocaly, removeLocaly, saveLocaly } from "./tools/clientstorage.js";
|
||||
import { addElement } from "./tools/dom.js";
|
||||
import { helloDev } from "./tools/everywhere.js";
|
||||
@ -18,7 +18,8 @@ import { getDatasFromInputs, setAttributesToInputs } from "./tools/forms.js";
|
||||
import { checkAnswerDatas, checkSession, getConfig, getPassword, getTimeDifference } from "./tools/users.js";
|
||||
|
||||
// Dictionnaires :
|
||||
const txt = require("../../lang/"+lang+"/general");
|
||||
const txtServerError = require("../../lang/"+lang+"/general").serverError;
|
||||
const txtNotRequired = require("../../lang/"+lang+"/general").notRequired;
|
||||
const txtUsers = require("../../lang/"+lang+"/user");
|
||||
|
||||
// Principaux éléments du DOM manipulés :
|
||||
@ -41,7 +42,7 @@ const initialise = async () =>
|
||||
const isConnected=await checkSession();
|
||||
if(isConnected)
|
||||
{
|
||||
saveLocaly("message", { message: txtUsers.alreadyConnected, color:"information" });// pour l'afficher sur la page suivante
|
||||
saveLocaly("message", { message: txtUsers.alreadyConnected, color:"info" });// pour l'afficher sur la page suivante
|
||||
const user=getLocaly("user", true);
|
||||
const homePage=user.status+"HomePage";
|
||||
window.location.assign("/"+configTemplate[homePage]);
|
||||
@ -54,7 +55,7 @@ const initialise = async () =>
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
addElement(divResponse, "p", txt.serverError, "", ["error"]);
|
||||
addElement(divResponse, "p", txtServerError, "", ["error"]);
|
||||
console.error(e);
|
||||
}
|
||||
}
|
||||
@ -66,13 +67,13 @@ passwordLink.addEventListener("click", function(e)
|
||||
e.preventDefault();
|
||||
passwordInput.type="text";
|
||||
passwordInput.value=getPassword(8, 12);
|
||||
// copie du mot de passe généré dans le presse-papier
|
||||
// Copie du mot de passe généré dans le "presse-papier" de l'ordinateur :
|
||||
passwordInput.select();
|
||||
document.execCommand("copy");
|
||||
addElement(passwordHelp, "div", txtUsers.passwordCopied, "", ["success"]);
|
||||
});
|
||||
|
||||
// Test si l'e-mail saisi est déjà utilisé pour un compte déjà existant.
|
||||
// Test si l'e-mail saisi est déjà utilisé par un autre compte.
|
||||
// Si c'est le cas, la validation du formulaire est bloquée.
|
||||
emailInput.addEventListener("focus", function(e)
|
||||
{
|
||||
@ -105,11 +106,10 @@ emailInput.addEventListener("blur", function(e)
|
||||
}
|
||||
});
|
||||
|
||||
// Vérification que le code de parrainage saisi est valide.
|
||||
// Si ce n'est pas le cas, cela n'est pas bloquant.
|
||||
// Vérification que le code/e-mail de parrainage saisi est valide.
|
||||
codeGodfatherInput.addEventListener("focus", function(e)
|
||||
{ // on efface l'éventuel message d'erreur si on revient sur le champ pour rectifier le tir
|
||||
addElement(document.getElementById("codeGodfatherMessage"), "i", txt.notRequired);
|
||||
{ // on efface l'éventuel message d'erreur si on revient sur le champ pour tester un autre code.
|
||||
addElement(document.getElementById("codeGodfatherMessage"), "i", txtNotRequired);
|
||||
});
|
||||
codeGodfatherInput.addEventListener("blur", function(e)
|
||||
{
|
||||
@ -124,7 +124,7 @@ codeGodfatherInput.addEventListener("blur", function(e)
|
||||
{
|
||||
if (this.status === 204)
|
||||
addElement(document.getElementById("codeGodfatherMessage"), "div", txtUsers.godfatherNotFound, "", ["error"]);
|
||||
else // !! à revoir car cela peut permettre de savoir qu'une adresse e-mail est présente dans le bd
|
||||
else
|
||||
addElement(document.getElementById("codeGodfatherMessage"), "div", txtUsers.godfatherFound, "", ["success"]);
|
||||
}
|
||||
}
|
||||
@ -151,18 +151,15 @@ myForm.addEventListener("submit", function(e)
|
||||
{
|
||||
myForm.style.display="none";
|
||||
addElement(divResponse, "p", response.message, "", ["success"]);
|
||||
removeLocaly("lastAnswer");// ! important pour ne pas enregister plusieurs fois le résultat
|
||||
removeLocaly("lastAnswer");// ! important pour ne pas enregister plusieurs fois le résultat.
|
||||
}
|
||||
else if (response.errors)
|
||||
{
|
||||
if(Array.isArray(response.errors))
|
||||
response.errors = response.errors.join("<br>");
|
||||
else
|
||||
response.errors = txt.serverError;
|
||||
addElement(divResponse, "p", response.errors, "", ["error"]);
|
||||
}
|
||||
else
|
||||
addElement(divResponse, "p", txt.serverError, "", ["error"]);
|
||||
addElement(divResponse, "p", txtServerError, "", ["error"]);
|
||||
}
|
||||
}
|
||||
xhr.setRequestHeader("Content-Type", "application/json");
|
||||
@ -177,7 +174,7 @@ myForm.addEventListener("submit", function(e)
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
addElement(divResponse, "p", txt.serverError, "", ["error"]);
|
||||
addElement(divResponse, "p", txtServerError, "", ["error"]);
|
||||
console.error(e);
|
||||
}
|
||||
});
|
@ -20,7 +20,7 @@ import { getUrlParams } from "./tools/url.js";
|
||||
import { checkSession } from "./tools/users.js";
|
||||
|
||||
// Dictionnaires :
|
||||
const txt = require("../../lang/"+lang+"/general");
|
||||
const txtServerError = require("../../lang/"+lang+"/general").serverError;
|
||||
const txtUsers = require("../../lang/"+lang+"/user");
|
||||
|
||||
const divResponse = document.getElementById("response");
|
||||
@ -33,9 +33,9 @@ const initialise = async () =>
|
||||
const isConnected=await checkSession();
|
||||
if(isConnected)
|
||||
{
|
||||
saveLocaly("message", { message: txtUsers.alreadyConnected, color:"information" });
|
||||
saveLocaly("message", { message: txtUsers.alreadyConnected, color:"info" });
|
||||
const user=getLocaly("user", true);
|
||||
const homePage=user.status+"HomePage";// lors de la création, seul le statut 'user" est possible
|
||||
const homePage=user.status+"HomePage";// lors de la création d'un compte, seul le statut "user" est possible.
|
||||
window.location.assign("/"+configTemplate[homePage]);
|
||||
}
|
||||
else
|
||||
@ -57,10 +57,7 @@ const initialise = async () =>
|
||||
}
|
||||
else if ((this.status === 200 || this.status === 404) && response.errors != undefined)
|
||||
{
|
||||
if(Array.isArray(response.errors))
|
||||
response.errors = response.errors.join("<br>");
|
||||
else
|
||||
response.errors = txt.serverError;
|
||||
addElement(divResponse, "p", response.errors, "", ["error"]);
|
||||
}
|
||||
else
|
||||
@ -74,7 +71,7 @@ const initialise = async () =>
|
||||
catch(e)
|
||||
{
|
||||
console.error(e);
|
||||
addElement(divResponse, "p", txt.serverError, "", ["error"]);
|
||||
addElement(divResponse, "p", txtServerError, "", ["error"]);
|
||||
}
|
||||
}
|
||||
initialise();
|
||||
|
@ -8,7 +8,7 @@ module.exports =
|
||||
needNotTooLongEmail: "Merci de saisir une adresse e-mail ne comptant pas plus de 255 caractères.",
|
||||
needPassWord : "Merci de fournir un mot de passe.",
|
||||
needLongPassWord : "Merci de fournir un mot de passe d'au moins MIN_LENGTH caractères.",
|
||||
passwordCopied: "Le mot de passe généré a été copié dans votre presse-papier. Vous pouvez le recopier (Ctrl+V) où vous le souhaitez.",
|
||||
passwordCopied: "Le mot de passe généré a été copié dans le presse-papier de votre ordinateur (ou mobile). Vous pouvez le \"coller\" où vous le souhaitez.",
|
||||
needStatus : "Il manque le statut.",
|
||||
needLanguage : "Il manque le code langue.",
|
||||
needValidLastConnectionDate : "La date de dernière connexion n'est pas valide.",
|
||||
@ -21,23 +21,23 @@ module.exports =
|
||||
needUGCOk : "Merci d'accepter les CGU pour créer votre compte.",
|
||||
godfatherNotFound: "Désolé mais aucun utilisateur n'a été trouvé pour ce code/e-mail parrain :(",
|
||||
godfatherFound: "Votre \"parrain\" a bien été trouvé :)",
|
||||
mailValidationMessage: "Votre inscription est bien enregistrée.\nPour la finaliser, merci de cliquer dans les 24H sur le lien de confirmation qui vient de vous être envoyé par e-mail.",
|
||||
mailValidationMessage: "Votre inscription est bien enregistrée.\nPour la finaliser, merci de cliquer dans les 24 H sur le lien de confirmation qui vient de vous être envoyé par e-mail.",
|
||||
mailValidationLinkSubject : "Merci de valider votre inscription",
|
||||
mailValidationLinkTxt : "Valider mon compte.",
|
||||
mailValidationLinkSBodyTxt : "Bonjour USER_NAME,\n\nPour valider votre inscription, merci de cliquer sur le lien suivant dans les 24h :\nLINK_URL",
|
||||
mailValidationLinkSBodyHTML : "<h3>Bonjour USER_NAME,</h3><p>Pour valider votre inscription, merci de cliquer sur le lien ci-dessous dans les 24h.</p>",
|
||||
validationMessage: "Votre compte vient bien d'être validé. Merci et bienvenue !<br>Vous pouvez sans tarder vous connecter ci-dessous pour accéder à votre compte.",
|
||||
validationMessage: "Votre compte vient bien d'être validé. Merci et bienvenue !<br>Vous pouvez sans tarder vous connecter ci-dessous pour accéder à votre espace WikiLerni.",
|
||||
validationMessageAdmin: "Le compte a bien été validé.",
|
||||
validationAlreadyMessage: "Il semble que vous ayez déjà validé votre compte.",
|
||||
validationAlreadyMessageAdmin: "Ce compte a déjà été validé.",
|
||||
mailWelcomeSubject : "Bienvenue !",
|
||||
mailWelcomeLinkTxt : "Me connecter à mon compte.",
|
||||
mailWelcomeBodyTxt : "Bonjour USER_NAME,\n\nVous venez de valider votre inscription à NOM_SITE. Merci et bienvenue !\n\nSi vous avez la moindre question ou suggestion concernant NOM_SITE, n'hésitez pas à me contacter en écrivant à EMAIL.\n\nJe vous conseille d'ailleurs d'ajouter EMAIL à votre carnet d'adresses pour éviter que les prochains envois du site n'arrivent en \"spam\".\n\nPar ailleurs, pour gérer votre abonnement, accéder à vos informations ou encore chercher plus facilement parmi les quizs du site, vous pouvez à tout moment vous connecter à votre compte utilisateur.\n\nPour ce faire, utilisez le lien suivant : LINK_URL\n\nEncore merci et à bientôt.",
|
||||
mailWelcomeBodyHTML : "<h3>Bonjour USER_NAME,</h3><p>Vous venez de valider votre inscription à NOM_SITE. Merci et bienvenue !<br><br>Si vous avez la moindre question ou suggestion concernant NOM_SITE, n'hésitez pas à me contacter en écrivant à <b>EMAIL</b>.<br><br>Je vous conseille d'ailleurs d'ajouter <b>EMAIL</b> à votre carnet d'adresses pour éviter que les prochains envois du site n'arrivent en <i>spam</i>.<br><br>Par ailleurs, pour gérer votre abonnement, accéder à vos informations ou encore chercher plus facilement parmi les quizs du site, vous pouvez à tout moment vous connecter à votre compte utilisateur.<br><br>Pour ce faire, utilisez le lien ci-dessous.<br><br>Encore merci et à bientôt.",
|
||||
mailWelcomeBodyTxt : "Bonjour USER_NAME,\n\nVous venez de valider votre inscription à NOM_SITE. Merci et bienvenue !\n\nSi vous avez la moindre question ou suggestion concernant NOM_SITE, n'hésitez pas à me contacter en écrivant à EMAIL.\n\nJe vous conseille d'ailleurs d'ajouter EMAIL à votre carnet d'adresses pour éviter que les prochains envois du site n'arrivent en \"spam\".\n\nPar ailleurs, pour gérer votre abonnement, accéder à vos informations ou encore chercher plus facilement parmi les quizs du site, vous pouvez à tout moment vous connecter à votre compte utilisateur.\n\nPour ce faire, utilisez le lien suivant : LINK_URL\n\nÀ bientôt sur NOM_SITE.",
|
||||
mailWelcomeBodyHTML : "<h3>Bonjour USER_NAME,</h3><p>Vous venez de valider votre inscription à NOM_SITE. Merci et bienvenue !<br><br>Si vous avez la moindre question ou suggestion concernant NOM_SITE, n'hésitez pas à me contacter en écrivant à <b>EMAIL</b>.<br><br>Je vous conseille d'ailleurs d'ajouter <b>EMAIL</b> à votre carnet d'adresses pour éviter que les prochains envois du site n'arrivent en <i>spam</i>.<br><br>Par ailleurs, pour gérer votre abonnement, accéder à vos informations ou encore chercher plus facilement parmi les quizs du site, vous pouvez à tout moment vous connecter à votre compte utilisateur.<br><br>Pour ce faire, utilisez le lien ci-dessous.<br><br>À bientôt sur NOM_SITE.",
|
||||
mailThankGodfatherSubject : "Merci !",
|
||||
mailThankGodfatherLinkTxt : "Me connecter à mon compte.",
|
||||
mailThankGodfatherBodyTxt : "Bonjour USER_NAME,\nGrâce à vous un nouvel utilisateur (EMAIL) vient de s'inscrire sur NOM_SITE.\nMerci et à bientôt !",
|
||||
mailThankGodfatherBodyHTML : "<h3>Bonjour USER_NAME,</h3><p>Grâce à vous un nouvel utilisateur (EMAIL) vient de s'inscrire sur NOM_SITE.</p><p>Merci et à bientôt !</p>",
|
||||
mailThankGodfatherBodyTxt : "Bonjour USER_NAME,\nGrâce à vous, un nouvel utilisateur (EMAIL) vient de s'inscrire sur NOM_SITE.\nSi dans l'avenir cette personne souscrit un abonnement prémium, votre propre abonnement sera prolongé de 30 jours.\nEncore merci et à bientôt !",
|
||||
mailThankGodfatherBodyHTML : "<h3>Bonjour USER_NAME,</h3><p>Grâce à vous, un nouvel utilisateur (EMAIL) vient de s'inscrire sur NOM_SITE.<br>Si dans l'avenir cette personne souscrit un abonnement prémium, votre propre abonnement sera prolongé de 30 jours.</p><p>Encore merci et à bientôt !</p>",
|
||||
badLinkValidationMessage: "Votre lien de confirmation ne semble pas valide ou bien il a expiré. Vous pouvez en recevoir un nouveau <a href='#URL'>en cliquant ici</a>.",
|
||||
emailNotFound: "Aucun compte utilisateur n'a été trouvé pour cette adresse e-mail.",
|
||||
alreadyConnected: "Vous êtes déjà connecté au site !",
|
||||
|
@ -40,7 +40,7 @@ module.exports =
|
||||
homeP1: "Avec WikiLerni, vous apprenez chaque jour de nouvelles choses.<br>Des articles de Wikipédia sont sélectionnés pour vous et sont suivis d'un quiz vous permettant de tester ce que vous en avez retenu.<br>De jour en jour de nouvelles graines de savoir sont ainsi semées dans votre \"jardin\".",
|
||||
homeTitle2: "La culture en liberté",
|
||||
homeP2: "Tout comme sur Wikipédia <span class='postscriptum'>(*)</span>, le logiciel et le contenu partagé sur WikiLerni <a href=\"/credits.html\" title=\"En savoir plus\">sont libres</a>.<br>Sur WikiLerni, pas de publicité, ni de commercialisation de vos données personnelles.<br>Vous pouvez venir y \"cultiver votre jardin\" en toute tranquillité.<br><br><span class='postscriptum'>(*) Bien que partageant ses valeurs, WikiLerni est un projet indépendant de la fondation Wikipédia.</span>",
|
||||
homeBtnAboutTxt: "En savoir plus sur WikiLerni !",
|
||||
homeBtnAboutTxt: "En savoir plus sur WikiLerni ?",
|
||||
homeBtnSubscribeTxt: "Tester WikiLerni gratuitement.",
|
||||
newQuestionnairesTitle: "Les derniers quizs publiés sur WikiLerni",
|
||||
newQuestionnairesIntro: "Liste des derniers quizs publiés sur WikiLerni.",
|
||||
|
Loading…
Reference in New Issue
Block a user