Browse Source

Ajout champ email doublon pour bot dans formulaire inscription + formulaire inscription sur la page d'accueil

master
Fabrice PENHOËT 10 months ago
parent
commit
391f5240d4
  1. 2
      controllers/questionnaire.js
  2. 8
      controllers/user.js
  3. 10
      front/public/inscription.html
  4. 7
      front/public/themes/wikilerni/css/style.css
  5. 5
      lang/fr/user.js
  6. 6
      views/wikilerni/config/fr.js
  7. 35
      views/wikilerni/home.pug
  8. 5
      views/wikilerni/quiz-element.pug

2
controllers/questionnaire.js

@ -796,6 +796,7 @@ const creaNewQuestionnairesHTML = async (Questionnaires) =>
// On regénère la page d'accueil avec le(s) dernier(s) questionnaire(s) mis en avant :
let compiledFunction = pug.compileFile("./views/"+config.theme+"/home.pug");
const configTpl = require("../views/"+config.theme+"/config/"+config.availableLangs[0]+".js");
const txtUser = require("../lang/"+config.adminLang+"/user");
let questionnaires=[];
for(let i in Questionnaires)
questionnaires.push(await searchQuestionnaireById(Questionnaires[i].id));
@ -808,6 +809,7 @@ const creaNewQuestionnairesHTML = async (Questionnaires) =>
txtGeneral : txtGeneral,
txtQuestionnaire: txtQuestionnaire,
txtIllustration: txtIllustration,
txtUser: txtUser,
pageLang: config.adminLang,
metaDescription: txtGeneral.siteMetaDescription,
pageTitle: txtGeneral.siteHTMLTitle,

8
controllers/user.js

@ -63,6 +63,7 @@ exports.getGodfatherId = async (req, res, next) =>
// Contrôleur traitant les données envoyées pour une inscription
// Les CGU doivent être acceptées et une adresse e-mail envoyée.
// Un champ email2 invisible ne devrait être envoyé que par des bots
// Le reste peut être adapté sur la page de validation de l'inscription.
exports.signup = async (req, res, next) =>
{
@ -73,6 +74,11 @@ exports.signup = async (req, res, next) =>
res.status(400).json({ errors: [txt.needUGCOk] });
else if(tool.isEmpty(req.body.email))
res.status(400).json({ errors: [txt.needEmail] });
else if(!tool.isEmpty(req.body.email2))
{
res.status(400).json({ errors: [txt.failBotTest] });
console.log(txt.failBotTestLog+req.body.email2);
}
else
{
// Un mot de passe temporaire et non communiqué est généré :
@ -91,7 +97,7 @@ exports.signup = async (req, res, next) =>
else if(req.body.GroupId)
await answerCtrl.saveAnswerToGroup(req.body);
await sendValidationLink(user);
res.status(201).json({ message: txt.mailValidationMessage });
res.status(201).json({ message: txt.mailValidationMessage.replace("#EMAIL", req.body.email) });
next();
}
}

10
front/public/inscription.html

@ -39,6 +39,7 @@
<form class="needJS" id="subscription" method="POST">
<fieldset>
<label for="email">E-mail : </label><input id="email" type="email" name="email" placeholder="Adresse e-mail" class="cardboard">
<input id="email2" type="email" name="email2" placeholder="Si vous voyez ce champ, laissez-le vide" class="needJS">
<div id="emailMessage"></div>
</fieldset>
<ul class="checkbox_li">
@ -54,11 +55,10 @@
<div id="explanations" class="framed engraved">
<h2>Besoin d’aide ?</h2>
<p>Votre compte vous permettra de <b>recevoir régulièrement de nouvelles « graines de culture » directement sur votre adresse e-mail</b>. Vous pourrez aussi sauvegarder vos résultats aux quizs.</p>
<p>La saisie d’une adresse e-mail <b>est obligatoire</b> et <b>vous devez accepter les Conditions Générales d’Utilisation</b>.</p>
<p><b>Vous recevrez un lien sur l’adresse e-mail saisie</b> sur lequel vous devrez cliquer pour valider la création de votre compte.</p>
<p>Une fois cliqué sur ce lien, <b>vous serez invité à compléter vos informations (pseudo, mot de passe…) ou encore à désigner votre « parrain »</b> (si c’est le cas).</p>
<p>La création de votre compte est <b>gratuite et sans engagement</b>. Elle vous permet de tester WikiLerni durant une période de 15 jours. Libre à vous ensuite de vous abonner ou pas.</p>
<p>Votre compte WikiLerni va vous permettre de <b>recevoir régulièrement par e-mail des suggestions d’articles lisibles en quelques minutes sur des thèmes variés : arts, cinéma, littérature, musique, mythologie, sciences, etc.</b> Ces lectures sont suivies de <b>quizs vous permettant de tester ce que vous en avez retenu</b>.</p>
<p>La création de votre compte est <b>gratuite et sans engagement</b> et vous pouvez ensuite <b>stopper les envois en un clic</b>. Elle vous permet de tester WikiLerni durant une période de 15 jours. Libre à vous ensuite de vous abonner ou pas.</p>
<p>Pour créer votre compte, saisissez juste votre adresse e-mail et acceptez les Conditions Générales d’Utilisation. <b>Vous recevrez un lien de validation sur l’adresse e-mail saisie, qui doit donc être valide</b>.</p>
<p>Une fois cliqué sur ce lien, <b>vous serez invité à compléter vos informations (choix d’un pseudo, mot de passe…) ou encore à désigner votre « parrain »</b> (facultatif).</p>
</div>
</div>

7
front/public/themes/wikilerni/css/style.css

@ -878,6 +878,7 @@ margin-top: -1em;
padding-top:1.5em;
border-bottom: 1px solid rgba(0,0,0,0.8);
box-shadow: 0px 0px 5px rgba(0,0,0,0.75);
}
#home img
{
@ -914,6 +915,7 @@ line-height: 1.5em;
font-size: 1.1em;
padding: 0.2em;
}
/*
#home input[type="text"]
{
width:90%;
@ -923,7 +925,7 @@ margin-bottom:1em;
{
margin-top:1em;
font-size: 1em;
}
}*/
/*
#home a.button
{
@ -949,10 +951,11 @@ font-family: inherit;
font-size: 1.2em;
padding: 0 0.3em;
}
/*
#home input[type="text"]
{
width:75%;
}
}*/
}
/*-----------------Propriétés spécifiques à la page d'accueil sur grands écrans --------------*/
@media screen and (min-width: 800px)

5
lang/fr/user.js

@ -11,8 +11,11 @@ module.exports =
deleteInactiveUsersMessage: " comptes utilisateurs inactifs ont été supprimés.",
deleteOkMessage: "L'utilisateur a bien été supprimé.",
emailNotFound: "Aucun compte utilisateur n'a été trouvé pour cette adresse e-mail.",
failBotTest: "Un problème a été rencontré durant votre inscription. En cas de difficulté, n'hésitez pas contacter l'administrateur du site.",
failBotTestLog: "Une inscription a été bloquée, parce que le champ email2 était renseigné avec : ",
formsEmailLabel: "E-mail :",
formsEmailPlaceholder: "Votre adresse e-mail",
formsEmail2Placeholder: "Si vous voyez ce champ, laissez-le vide",//champ qui ne devrait pas être visible par des humains
formsCGUOkLabel: "J'accepte <a href=#link target=\"_blank\" rel=\"noopener\" title=\"À lire :)\">les Conditions Générale d'Utilisation</a> du site (requis).",
formsSubmitTxt: "Je m'abonne !",
godfatherFound: "Votre \"parrain\" a bien été trouvé. Cette personne sera avertie que vous l'avez désignée.",
@ -49,7 +52,7 @@ module.exports =
mailValidationLinkSBodyTxt : "Bonjour USER_NAME,\n\nPour valider et compléter votre inscription, merci de cliquer sur le lien suivant dans les 24h :\nLINK_URL",
mailValidationLinkSubject : "Merci de valider votre inscription",
mailValidationLinkTxt : "Valider mon compte.",
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.",
mailValidationMessage: "Votre inscription est bien enregistrée.\nPour la finaliser, merci de cliquer dans les 24 H sur le lien de confirmation qui vient d'être envoyé à votre adresse e-mail (#EMAIL).",
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 <b>pour éviter que les prochains envois de NOM_SITE n'arrivent en <i>spam</i></b>.<br><br>Par ailleurs, pour gérer votre abonnement, accéder à vos informations ou encore chercher plus facilement parmi le contenu 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.",
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 de NOM_SITE n'arrivent en \"spam\".\n\nPar ailleurs, pour gérer votre abonnement, accéder à vos informations ou encore chercher plus facilement parmi le contenu 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.",
mailWelcomeLinkTxt : "Me connecter à mon compte.",

6
views/wikilerni/config/fr.js

@ -42,11 +42,11 @@ module.exports =
/* Page d'accueil */
homePageTxt: "Page d'accueil",
homeTitle1: "De nature curieuse ?",
homeP1: "<b>Avec WikiLerni, vous allez apprendre chaque jour de nouvelles choses</b>.<br>Vous recevrez de courts articles, lisibles en quelques minutes.<br>Des quizs vous permettront ensuite de tester ce que vous aurez retenu.<br>De jour en jour <b>de nouvelles graines de culture sont ainsi semées dans votre jardin</b>.",
homeP1: "<b>Avec WikiLerni, vous apprenez chaque jour de nouvelles choses</b>.<br>Vous recevez de courts articles, lisibles en quelques minutes.<br>Des quizs vous permettent ensuite de tester ce que vous avez retenu.<br>De jour en jour <b>de nouvelles graines de culture sont ainsi semées dans votre jardin</b>.",
homeTitle2: "La culture générale en liberté",
homeP2: "Sur WikiLerni <b>pas de faits alternatifs</b>, tous les contenus sont <b>sourcés par des articles Wikipédia</b>.<br>Et tout comme sur Wikipédia, le logiciel et le contenu publié sur WikiLerni <a href=\"/credits.html\" title=\"En savoir plus sur ce sujet\">sont partagés sous licences libres</a>.<br>Le tout sans publicité, ni commercialisation de vos données.<br><b>Sur WikiLerni vous cultivez votre jardin en toute tranquillité.</b>",
homeP2: "<b>Pas de faits alternatifs</b>, tous les contenus sont <b>sourcés par des articles Wikipédia</b>.<br>Et tout comme sur Wikipédia, le logiciel et le contenu publié sur WikiLerni <a href=\"/credits.html\" title=\"En savoir plus sur ce sujet\">sont partagés sous licences libres</a>.<br>Le tout sans publicité, ni commercialisation de vos données.<br><b>Sur WikiLerni, vous cultivez votre jardin en toute tranquillité.</b>",
homeBtnAboutTxt: "En savoir plus sur WikiLerni ?",
homeBtnSubscribeTxt: "Tester WikiLerni gratuitement.",
homeSubcriptionFormTitle: "Tester WikiLerni gratuitement",
/* Page dernières publications... */
newQuestionnairesTitle: "Culture générale - apprenez de nouvelles choses avec WikiLerni",
newQuestionnairesIntro: "WikiLerni : testez vos connaissances et apprenez de nouvelles choses avec WikiLerni.",

35
views/wikilerni/home.pug

@ -2,7 +2,7 @@ extends layout.pug
block append scripts
script(src="/JS/polyfill.app.js" defer)
script(src="/JS/index.app.js" defer)
script(src="/JS/subscribe.app.js" defer)
block content
@ -15,11 +15,32 @@ block content
h3 #{configTpl.homeTitle1}
p !{configTpl.homeP1}
h3 #{configTpl.homeTitle2}
p !{configTpl.homeP2}
p
a(href="/"+configTpl.subscribePage class="button cardboard" title=configTpl.homeBtnSubscribeTxt) #{configTpl.homeBtnSubscribeTxt}
p
a(href="/"+configTpl.aboutPage class="button cardboard" title=configTpl.homeBtnAboutTxt) #{configTpl.homeBtnAboutTxt}
p !{configTpl.homeP2}
//p
// a(href="/"+configTpl.aboutPage class="button cardboard" title=configTpl.homeBtnAboutTxt) #{configTpl.homeBtnAboutTxt}
div(class="engraved framed")
// Formulaire d'inscription :
noscript
div
strong #{configTpl.noJSNotification}
- const cguOkLabel = txtUser.formsCGUOkLabel.replace("#link", "/"+configTpl.cguPage);
form(id="subscription" method="POST" class="needJS")
h3 #{configTpl.homeSubcriptionFormTitle}
fieldset
label(for="email") #{txtUser.formsEmailLabel}
input(id="email" type="email" name="email" placeholder=txtUser.formsEmailPlaceholder class="cardboard")
input(id="email2" type="email" name="email2" placeholder=txtUser.formsEmail2Placeholder class="needJS")
div#emailMessage
ul(class="checkbox_li")
li(class="checkbox_li")
label(for="cguOk" class="check")
input(type="checkbox" id="cguOk" name="cguOk" value="true")
div(class="checkbox_override")
span !{cguOkLabel}
div(class="input_wrapper")
input(id="submitDatas" type="submit" value=txtUser.formsSubmitTxt class="cardboard")
div(id="response")
- nbQuestionnairesList=configTpl.maxQuestionnairesSiteHomePage;
include includes/listing-questionnaires.pug

5
views/wikilerni/quiz-element.pug

@ -93,7 +93,8 @@ block content
fieldset
label(for="email") #{txtUser.formsEmailLabel}
input(id="email" type="email" name="email" placeholder=txtUser.formsEmailPlaceholder class="cardboard")
div#emailMessage
input(id="email2" type="email" name="email2" placeholder=txtUser.formsEmail2Placeholder class="needJS")
div#emailMessage
ul(class="checkbox_li")
li(class="checkbox_li")
label(for="cguOk" class="check")
@ -102,7 +103,7 @@ block content
span !{cguOkLabel}
div(class="input_wrapper")
input(id="submitDatas" type="submit" value=txtUser.formsSubmitTxt class="cardboard")
div(id="response")
div(id="response")
div#zerozozio
a(href="mailto:?to=&amp;subject="+questionnaire.Questionnaire.title+"&amp;body="+txtQuestionnaire.btnShareQuizMailBody+linkCanonical rel="nofollow noopener" title=txtQuestionnaire.btnShareQuizTxt+"e-mail* ("+txtGeneral.alertNewWindow+")" target="_blank")

Loading…
Cancel
Save