80 lines
3.5 KiB
JavaScript
80 lines
3.5 KiB
JavaScript
// -- PAGE PERMETTANT DE VALIDER LA CRÉATION DE SON COMPTE
|
|
|
|
/// Un token est transmis en paramètre de l'Url. Il a une validité limité dans le temps.
|
|
/// Si le token n'est pas/plus valide, on redirige l'utilisateur vers la page de connexion pour obtenir un nouveau lien.
|
|
/// Si le token est ok, on l'informe que tout est ok et lui propose de se connecter.
|
|
/// Si l'utilisateur a déjà une session active valide, c'est qu'il a déjà cliqué sur le lien. On le redirige vers sa page d'accueil.
|
|
|
|
// Fichier de configuration tirés du backend :
|
|
import { apiUrl, availableLangs, theme } from "../../config/instance.js";
|
|
const lang=availableLangs[0];
|
|
|
|
import { checkSubscribeTokenRoute, userRoutes } from "../../config/users.js";
|
|
const configTemplate = require("../../views/"+theme+"/config/"+lang+".js");
|
|
|
|
// Importation des fonctions utiles au script :
|
|
import { getLocaly, saveLocaly } from "./tools/clientstorage.js";
|
|
import { addElement } from "./tools/dom.js";
|
|
import { helloDev } from "./tools/everywhere.js";
|
|
import { loadMatomo } from "./tools/matomo.js";
|
|
import { getUrlParams } from "./tools/url.js";
|
|
import { checkSession } from "./tools/users.js";
|
|
|
|
// Dictionnaires :
|
|
const txtServerError = require("../../lang/"+lang+"/general").serverError;
|
|
const txtUsers = require("../../lang/"+lang+"/user");
|
|
|
|
const divResponse = document.getElementById("response");
|
|
|
|
const initialise = async () =>
|
|
{
|
|
try
|
|
{
|
|
// si l'utilisateur est déjà connecté, pas la peine d'aller + loin :
|
|
const isConnected=await checkSession();
|
|
if(isConnected)
|
|
{
|
|
saveLocaly("message", { message: txtUsers.alreadyConnected, color:"info" });
|
|
const user=getLocaly("user", true);
|
|
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
|
|
{
|
|
loadMatomo();
|
|
const datas=getUrlParams();
|
|
if(datas && datas.t!==undefined)
|
|
{
|
|
const xhr = new XMLHttpRequest();
|
|
xhr.open("GET", apiUrl+userRoutes+checkSubscribeTokenRoute+datas.t);
|
|
xhr.onreadystatechange = function()
|
|
{
|
|
if (this.readyState == XMLHttpRequest.DONE)
|
|
{
|
|
let response=JSON.parse(this.responseText);
|
|
if (this.status === 200 && response.userId != undefined && response.token != undefined)
|
|
{
|
|
saveLocaly("message", { message: txtUsers.validationMessage, color:"success" });// pour l'afficher sur la page suivante
|
|
window.location.assign("/"+configTemplate.connectionPage);
|
|
}
|
|
else if ((this.status === 200 || this.status === 404) && response.errors != undefined)
|
|
{
|
|
response.errors = response.errors.join("<br>");
|
|
addElement(divResponse, "p", response.errors, "", ["error"]);
|
|
}
|
|
else
|
|
addElement(divResponse, "p", txtUsers.badLinkValidationMessage.replace("#URL", configTemplate.connectionPage), "", ["error"]);
|
|
}
|
|
}
|
|
xhr.send();
|
|
}
|
|
}
|
|
}
|
|
catch(e)
|
|
{
|
|
console.error(e);
|
|
addElement(divResponse, "p", txtServerError, "", ["error"]);
|
|
}
|
|
}
|
|
initialise();
|
|
helloDev(); |