Relecture JS gestion compte utilisateur avec notamment debug prise en compte des ancres et textes ajoutés dans dictionnaire

This commit is contained in:
Fabrice PENHOËT 2020-09-10 12:22:34 +02:00
parent 3239991037
commit 893f0cdf9a
2 changed files with 22 additions and 17 deletions

View File

@ -2,24 +2,22 @@
/// Vérifier que l'utilisateur est bien connecté, a le bon statut et le rediriger vers le formulaire d'inscription si ce n'est pas le cas.
/// Si c'est ok, on récupère les infos de son compte et son abonnement et les affiche dans le formulaire.
/// Une information est affichée concernant la possibilité de parrainage et les listes les filleuils existants.
/// Une information est affichée concernant la possibilité de parrainage et liste les filleuls existants.
/// Un menu permet à l'utilisateur d'accéder à la modification de ses infos, etc.
/// Des boutons de paiement sont aussi affichés suivant le choix de l'utilisateur pour lui permettre de prolonger son abonnement.
/// Un message venant d'une autre page peut aussi être à afficher lors du premier chargement.
/// Ajout test email en doublon avant envoi ?
// Fichier de configuration côté client :
import { apiUrl, availableLangs, theme } from "../../config/instance.js";
const lang=availableLangs[0];
const configFrontEnd = require("../../views/"+theme+"/config/"+lang+".js");
// Fonctions utiles au script : !! revoir quand le rest sera fini pour vérifier si tout est utile
import { getLocaly, removeLocaly, saveLocaly } from "./tools/clientstorage.js";
// Fonctions utiles au script
import { getLocaly, removeLocaly } from "./tools/clientstorage.js";
import { addElement } from "./tools/dom.js";
import { helloDev, updateAccountLink } from "./tools/everywhere.js";
import { getDatasFromInputs, setAttributesToInputs } from "./tools/forms.js";
import { isEmpty, replaceAll } from "../../tools/main";
import { isEmpty } from "../../tools/main";
import { checkSession, getConfig, getTimeDifference } from "./tools/users.js";
// Spécifique WebPortage pour paiements:
@ -58,6 +56,10 @@ const initialise = async () =>
if(isConnected)
{
divMain.style.display="block";
// l'éventuelle ancre est ignorée, car absente du DOM avant d'avoir vérifié la connexion
if(window.location.hash!==undefined)
window.location.assign(window.location.hash);
if(!isEmpty(getLocaly("message")))
{
addElement(divMessage, "p", getLocaly("message", true).message, "", [getLocaly("message", true).color], "", false);
@ -67,10 +69,10 @@ const initialise = async () =>
updateAccountLink(user.status, configFrontEnd);
// Initialise le formulaire permettant de mettre à jour les infos :
setAttributesToInputs(config, formAccount);
// Certains navigateurs ont tendance à remplir tout seul les champs password
// Certains navigateurs remplissent les champs password :
newPassword.value="";
// Fonction affichant les infos connues au premier affichage puis après envoi mise à jour
// Fonction affichant les infos connues au premier affichage, puis après envoi mise à jour
const getInfos = () =>
{
const xhrGetInfos = new XMLHttpRequest();
@ -98,21 +100,22 @@ const initialise = async () =>
// jours de réception
for(let i in response.Subscription.receiptDays)
formAccount.elements["d"+response.Subscription.receiptDays[i]].checked="checked";
// "codes" possibles à transmettre pour parrainer d'autres utilisateurs
showGFEmail.innerHTML=response.User.email;
showGFCode.innerHTML=config.beginCodeGodfather+response.User.id;
}
const beginSubTS=new Date(response.Subscription.createdAt).getTime();
const nbDaysOk=response.Subscription.numberOfDays-Math.round((Date.now()-beginSubTS)/1000/3600/24);
if(nbDaysOk>0)
addElement(divSubscribeIntro, "p", txtSubscriptions.infosNbDays.replace("NB_DAYS", nbDaysOk), "", ["information"]);
if(nbDaysOk > 0)
addElement(divSubscribeIntro, "p", txtSubscriptions.infosNbDays.replace("NB_DAYS", nbDaysOk), "", ["info"]);
else
{
addElement(divSubscribeIntro, "p", txtSubscriptions.infosExpirated.replace("NB_DAYS", nbDaysOk), "", ["error"]);
window.location.assign("#subscribe");
}
}
}
}
xhrGetInfos.setRequestHeader("Authorization", "Bearer "+user.token);
xhrGetInfos.setRequestHeader("Authorization", "Bearer "+user.token);
xhrGetInfos.send();
}
// Remonte les infos déjà enregistrées :
@ -178,11 +181,11 @@ const initialise = async () =>
});
// on passe à la caisse ?
const CGV=document.getElementById("CGVOk");
const abo9=document.getElementById("abo9");
const abo18=document.getElementById("abo18");
const abo36=document.getElementById("abo36");
const abo54=document.getElementById("abo54");
const CGV=document.getElementById("CGVOk");
const divWPBtns=document.getElementById("WPBtns");
divWPBtns.style.display="none";
abo9.addEventListener("change", function(e)
@ -224,7 +227,7 @@ const initialise = async () =>
divWPBtns.style.display="none";
});
// Liste des filleuils, si il y en a
// Liste des filleuls, si il y en a
const xhrGetGodchilds = new XMLHttpRequest();
xhrGetGodchilds.open("GET", apiUrl+config.userRoutes+config.getGodChilds);
xhrGetGodchilds.onreadystatechange = function()
@ -236,10 +239,10 @@ const initialise = async () =>
{
const nbGodchilds=response.length;
if(nbGodchilds===0)
txtGodchilds="Pour l'instant, aucune personne ne s'est inscrite, en vous désignant comme \"parrain\".";// revoir : utiliser le dictionnaire User
txtGodchilds=txtUsers.infosUserNoGodchilds;
else
{
txtGodchilds=nbGodchilds+" utilisateur(s) inscrit(s) en vous désignant comme \"parrain\" :";
txtGodchilds=txtUsers.infosUserNbGodChilds.replace("#NB", nbGodchilds);
for(let i in response)
txtGodchilds+=response[i].name+" ("+response[i].email+") ";
}

View File

@ -80,6 +80,8 @@ module.exports =
welcomeMessage: "Bienvenue #NAME !",
byebyeMessage: "Si vous voyez ce message, c'est que votre déconnexion s'est bien déroulée.<br>À bientôt !",
infosUserForAdmin: "Cet utilisateur (id: ID_USER) a <b>créé son compte le DATE_CREA</b>, la dernière mise à jour datant du DATE_UPDATE.<br><b>Date de sa dernière connexion : DATE_CONNECTION.</b>",
infosUserNoGodchilds: "Pour l'instant, aucune personne ne s'est inscrite, en vous désignant comme \"parrain\".",
infosUserNbGodChilds: "Voici les #NB utilisateur(s) inscrit(s) en vous désignant comme \"parrain\" : ",
infosAdminGodfather: "Cet utilisateur a été parrainé par ",
infosAdminNbGodChilds: "Ses #NB filleuils : "
infosAdminNbGodChilds: "Ses #NB filleuls : "
};