Aller au contenu

Licences

Quota de projets par offre d'abonnement, projets du client, identifiants chez un fournisseur de licence coupés ou rétablis selon l'abonnement, connecteur Verdaccio.

@fraza-pro/module-licenses vend des licences avec les abonnements de Facturation. Une offre reçoit un quota de projets. Chaque abonnement à cette offre donne une licence au client, qui crée ses projets depuis son espace client. Chaque projet reçoit un identifiant chez un fournisseur de licence, actif tant que l'abonnement est payé, coupé quand il prend fin, rétabli quand le client revient.

Le premier fournisseur est un registre npm Verdaccio : chaque projet reçoit une clé fzk_…, que le client colle dans le .npmrc de son projet, et le registre demande au site si elle est active. C'est ainsi que Fraza vend Fraza Pro sur compte.fraza.ca. Un projet branche son propre fournisseur par un connecteur.

npm i @fraza-pro/module-licenses
Paquet@fraza-pro/module-licenses
LicenceFraza Pro. Voir Licence et propriété.
Registrehttps://registry.fraza.ca/, avec la clé du projet. Voir Modules Pro.
ActivationFRAZA_MODULE_LICENSES=true
Demande@fraza-pro/module-billing, avec FRAZA_MODULE_BILLING_SUBSCRIPTIONS_ENABLED=true.

Pages de cette section

PageContenu
InstallationInstaller le module, créer les tables, régler les quotas, monter l'espace client.
ConfigurationVariables d'environnement, permissions, entrée d'admin, tâches planifiées.
Licences et projetsLe statut d'une licence d'après son abonnement, le quota, les projets, les identifiants, la révocation.
Connecteurs et VerdaccioChoisir le fournisseur, installer le plugin Verdaccio, écrire son propre connecteur.
Modèle de donnéesLes cinq tables fraza_licenses_*.
APIRoutes HTTP, fonctions serveur importables et sous-entrée de l'espace client.

Ce que le module apporte

ÉlémentDétail
TablesCinq, toutes préfixées fraza_licenses_.
Entrée d'adminSection « Licences », icône TicketIcon, ordre 155, deux items : Licences et Quotas.
Permissionslicenses.view et licenses.manage.
Routes API8 routes d'admin, 4 routes de compte, 1 route pour le registre.
Espace clientLa section « Projets » de l'espace client du core, icône FolderIcon, ordre 30, enregistrée par la sous-entrée ./account, avec sa carte de résumé sur l'accueil du compte.
Tâches planifiéesDeux : la synchronisation des identifiants, chaque minute, et la révocation des licences suspendues, chaque nuit.
Événements écoutésLes huit événements subscription.* de Facturation. Voir Licences et projets.
Plugin Verdaccioverdaccio/plugin.cjs, livré avec le paquet, sans dépendance, déclaré comme plugin d'authentification et comme middleware. Voir Connecteurs et Verdaccio.

Deux principes qui expliquent le reste

La licence suit l'abonnement, dans sa transaction. Le module ne lit jamais l'état d'un abonnement pour décider : il écoute les événements de Facturation, émis dans la transaction de chaque changement. Un paiement reçu par Stripe, un virement Interac saisi à la main, une fin de grâce : chacun met la licence à jour en même temps que l'abonnement, ou pas du tout.

État voulu, puis synchronisation. Les événements et les actions du client n'écrivent que l'état voulu de chaque identifiant. Une tâche appelle ensuite le connecteur pour l'appliquer chez le fournisseur. Un fournisseur en panne ne bloque donc jamais un paiement, et rien n'est perdu : la tâche reprend jusqu'à ce que l'état réel rejoigne l'état voulu.

Notes

  • Une offre sans quota ne donne pas de licence : un site peut vendre d'autres abonnements sans les mêler au module.
  • Le secret d'un identifiant, la clé fzk_… avec Verdaccio, n'est montré qu'une fois, au client, à la création. La base n'en garde que le SHA-256. Un client qui le perd régénère la clé.
  • Le champ version du manifeste suit la version du paquet, recopiée par fraza-module sync-version.

Sur cette page