From da49e0121dcbe9fffe0c8eb3657bdc251b61861d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabrice=20PENHO=C3=8BT?= Date: Mon, 7 Dec 2020 16:42:39 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20possibilit=C3=A9=20abonnements=20non=20?= =?UTF-8?q?limit=C3=A9s=20dans=20le=20temps=20(suite=20scripts=20frontend?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/user.js | 3 +- front/public/accueil.html | 4 +- front/public/compte.html | 136 +++++++++++++++++++------------------- front/src/accountUser.js | 21 ++++-- front/src/manageUsers.js | 13 ++-- 5 files changed, 93 insertions(+), 84 deletions(-) diff --git a/controllers/user.js b/controllers/user.js index b2a0333..a19f720 100644 --- a/controllers/user.js +++ b/controllers/user.js @@ -247,7 +247,8 @@ exports.checkToken = async (req, res, next) => if(datas && datas.Subscription) { const beginSubTS=new Date(datas.Subscription.createdAt).getTime(); - const nbDaysOk=datas.Subscription.numberOfDays-Math.round((Date.now()-beginSubTS)/1000/3600/24); + // Si abonnement illimité, pas besoin de calculer le nbre de jours restants + const nbDaysOk=(datas.Subscription.numberOfDays===0) ? 1 : datas.Subscription.numberOfDays-Math.round((Date.now()-beginSubTS)/1000/3600/24); res.status(200).json( { isValid: true, diff --git a/front/public/accueil.html b/front/public/accueil.html index d73c9e7..54c5386 100644 --- a/front/public/accueil.html +++ b/front/public/accueil.html @@ -32,11 +32,9 @@ -
diff --git a/front/public/compte.html b/front/public/compte.html index e48d2f1..2137193 100644 --- a/front/public/compte.html +++ b/front/public/compte.html @@ -31,9 +31,8 @@
@@ -73,79 +72,80 @@
-
+
-

Les utilisateurs que vous avez parrainés

-
-

Vous pouvez parrainer d’autres utilisateurs. Pour ce faire, demandez-leur de saisir lors de l’inscription votre adresse e-mail ou encore le code suivant : .

-

À chaque fois qu’un utilisateur que vous avez parrainé souscrit ou renouvelle un abonnement payant, son abonnement comme le vôtre se trouve prolongé gratuitement de 30 jours. Cet avantage restera valable tant que cet utilisateur et vous-mêmes garderez votre compte WikiLerni.

-
-

Pour l’instant, aucune personne ne s’est inscrite, en vous désignant comme « parrain ».

- -

Votre abonnement

-
-
-
    -
  • - -
  • -
  • - -
  • -
  • - -
  • -
  • - -
  • - -
  • - -
  • -
-
- -
- -
-

Paiement de votre abonnement de soutien à 9 € TTC.

- +
+

Les utilisateurs que vous avez parrainés

+
+

Vous pouvez parrainer d’autres utilisateurs. Pour ce faire, demandez-leur de saisir lors de l’inscription votre adresse e-mail ou encore le code suivant : .

+

À chaque fois qu’un utilisateur que vous avez parrainé souscrit ou renouvelle un abonnement payant, son abonnement comme le vôtre se trouve prolongé gratuitement de 30 jours. Cet avantage restera valable tant que cet utilisateur et vous-mêmes garderez votre compte WikiLerni.

-
-

Paiement de votre abonnement de soutien à 18 € TTC.

- -
-
-

Paiement de votre abonnement de soutien à 36 € TTC.

- -
-
-

Paiement de votre abonnement de soutien à 54 € TTC.

- -
-

En cliquant sur le bouton de paiement, vous serez dirigé vers l’outil de facturation et de paiement en ligne.
Lors de votre premier abonnement, vous devrez y créer un compte client qui est distinct de votre compte utilisateur WikiLerni. Vous pouvez y utiliser un mot de passe différent.
Les années suivantes, lors de vos renouvellements, vous pourrez vous reconnecter à ce compte client.

+

Pour l’instant, aucune personne ne s’est inscrite, en vous désignant comme « parrain ».

-
-

Prix libre ?

-

WikiLerni pratique le « prix libre », c’est-à-dire que vous pouvez choisir quel montant vous êtes prêt à payer pour continuer à utiliser WikiLerni.

-

Il ne s’agit pas vraiment d’un don, mais d’un financement participatif. Sans cela, le site WikiLerni cessera son activité et vous ne pourrez donc plus l’utiliser.

-

Vous pouvez donc choisir en conscience ce que vous pouvez et souhaitez payer ce semestre pour WikiLerni, sachant que ce choix ne vous engagera pas pour les futurs renouvellements.

-

Une fois sélectionné le montant qui vous convient, il vous faudra cocher la case de validation des Conditions Générales de Vente, pour voir apparaître un bouton de paiement qui vous mènera sur l’outil de facturation et paiement en ligne de la société WebPortage.

-

Dédicacez des articles WikiLerni

-

Au-delà de la possibilité d’utiliser WikiLerni pendant 6 mois supplémentaires, à partir de l’abonnement à 3 € TTC/mois, pour vous remercier vous pourrez demander à apposer votre nom sur la page d’un ou plusieurs des articles publiés sur WikiLerni.

-

Il peut s’agir de votre nom / pseudo ou de celui de la personne à qui vous le dédicacez. Je vous contacterai pour vous demander et c’est évidemment facultatif !

Si vous souhaitez apposer le nom, voire le lien internet d’une activité commerciale ou associative, c’est aussi possible dans certaines conditions, mais merci de commencer par me contacter pour avis.

-

WikiLerni s’adapte à vous

-

Vous aimez WikiLerni, mais ne pouvez vraiment pas payer ? Vous préférez un autre montant ou un autre moyen de paiement (chèque, virement) ? Ou encore vous avez besoin d’explications ? Alors contactez-moi. Je me ferai un plaisir de vous répondre et d’essayer de m’adapter à votre situation.

+
+

Votre abonnement

+
+
+
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • + +
  • + +
  • +
+
+
+ +
+

Paiement de votre abonnement de soutien à 9 € TTC.

+ +
+
+

Paiement de votre abonnement de soutien à 18 € TTC.

+ +
+
+

Paiement de votre abonnement de soutien à 36 € TTC.

+ +
+
+

Paiement de votre abonnement de soutien à 54 € TTC.

+ +
+

En cliquant sur le bouton de paiement, vous serez dirigé vers l’outil de facturation et de paiement en ligne.
Lors de votre premier abonnement, vous devrez y créer un compte client qui est distinct de votre compte utilisateur WikiLerni. Vous pouvez y utiliser un mot de passe différent.
Les années suivantes, lors de vos renouvellements, vous pourrez vous reconnecter à ce compte client.

+
+
+

Prix libre ?

+

WikiLerni pratique le « prix libre », c’est-à-dire que vous pouvez choisir quel montant vous êtes prêt à payer pour continuer à utiliser WikiLerni.

+

Il ne s’agit pas vraiment d’un don, mais d’un financement participatif. Sans cela, le site WikiLerni cessera son activité et vous ne pourrez donc plus l’utiliser.

+

Vous pouvez donc choisir en conscience ce que vous pouvez et souhaitez payer ce semestre pour WikiLerni, sachant que ce choix ne vous engagera pas pour les futurs renouvellements.

+

Une fois sélectionné le montant qui vous convient, il vous faudra cocher la case de validation des Conditions Générales de Vente, pour voir apparaître un bouton de paiement qui vous mènera sur l’outil de facturation et paiement en ligne de la société WebPortage.

+

Dédicacez des articles WikiLerni

+

Au-delà de la possibilité d’utiliser WikiLerni pendant 6 mois supplémentaires, à partir de l’abonnement à 3 € TTC/mois, pour vous remercier vous pourrez demander à apposer votre nom sur la page d’un ou plusieurs des articles publiés sur WikiLerni.

+

Il peut s’agir de votre nom / pseudo ou de celui de la personne à qui vous le dédicacez. Je vous contacterai pour vous demander et c’est évidemment facultatif !

Si vous souhaitez apposer le nom, voire le lien internet d’une activité commerciale ou associative, c’est aussi possible dans certaines conditions, mais merci de commencer par me contacter pour avis.

+

WikiLerni s’adapte à vous

+

Vous aimez WikiLerni, mais ne pouvez vraiment pas payer ? Vous préférez un autre montant ou un autre moyen de paiement (chèque, virement) ? Ou encore vous avez besoin d’explications ? Alors contactez-moi. Je me ferai un plaisir de vous répondre et d’essayer de m’adapter à votre situation.

+
diff --git a/front/src/accountUser.js b/front/src/accountUser.js index 46c60fb..83d4265 100644 --- a/front/src/accountUser.js +++ b/front/src/accountUser.js @@ -35,7 +35,9 @@ const divCrash = document.getElementById("crash"); const divMain = document.getElementById("main-content"); const divMessage = document.getElementById("message"); const divResponse = document.getElementById("response"); +const divGodfatherInfos = document.getElementById("godfatherInfos"); const divGodchilds = document.getElementById("godchilds"); +const divSubscribeInfos = document.getElementById("subscribeInfos"); const divSubscribeIntro = document.getElementById("subscribeIntro"); const formAccount = document.getElementById("accountUpdate"); const newPassword = document.getElementById("newPassword"); @@ -99,14 +101,19 @@ const initialise = async () => showGFCode.innerHTML=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", infosNbDays.replace("NB_DAYS", nbDaysOk), "", ["info"]); - else + if(response.Subscription.numberOfDays !== 0) { - addElement(divSubscribeIntro, "p", infosExpirated.replace("NB_DAYS", nbDaysOk), "", ["error"]); - window.location.assign("#subscribe"); - } + divGodfatherInfos.style.display="block"; + divSubscribeInfos.style.display="block"; + const nbDaysOk=response.Subscription.numberOfDays-Math.round((Date.now()-beginSubTS)/1000/3600/24); + if(nbDaysOk > 0) + addElement(divSubscribeIntro, "p", infosNbDays.replace("NB_DAYS", nbDaysOk), "", ["info"]); + else + { + addElement(divSubscribeIntro, "p", infosExpirated.replace("NB_DAYS", nbDaysOk), "", ["error"]); + window.location.assign("#subscribe"); + } + } } } xhrGetInfos.setRequestHeader("Authorization", "Bearer "+user.token); diff --git a/front/src/manageUsers.js b/front/src/manageUsers.js index 2cc8b12..67cd370 100644 --- a/front/src/manageUsers.js +++ b/front/src/manageUsers.js @@ -131,11 +131,14 @@ const initialise = async () => for(let i in response.Subscription.receiptDays) formUser.elements["d"+response.Subscription.receiptDays[i]].checked="checked"; const beginSubTS=new Date(response.Subscription.createdAt).getTime(); - const nbDaysOk=response.Subscription.numberOfDays-Math.round((Date.now()-beginSubTS)/1000/3600/24); - if(nbDaysOk > 0) - subscribeIntro+="
"+infosNbDaysAdmin.replace("NB_DAYS", nbDaysOk); - else - subscribeIntro+="
"+infosExpiratedAdmin; + if(response.Subscription.numberOfDays !== 0) + { + const nbDaysOk=response.Subscription.numberOfDays-Math.round((Date.now()-beginSubTS)/1000/3600/24); + if(nbDaysOk > 0) + subscribeIntro+="
"+infosNbDaysAdmin.replace("NB_DAYS", nbDaysOk); + else + subscribeIntro+="
dd"+infosExpiratedAdmin; + } addElement(divSubscribeIntro, "p", subscribeIntro, "", ["info"], "", false); } else