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 |
|---|---|
| Licence | Fraza Pro. Voir Licence et propriété. |
| Registre | https://registry.fraza.ca/, avec la clé du projet. Voir Modules Pro. |
| Activation | FRAZA_MODULE_LICENSES=true |
| Demande | @fraza-pro/module-billing, avec FRAZA_MODULE_BILLING_SUBSCRIPTIONS_ENABLED=true. |
Pages de cette section
| Page | Contenu |
|---|---|
| Installation | Installer le module, créer les tables, régler les quotas, monter l'espace client. |
| Configuration | Variables d'environnement, permissions, entrée d'admin, tâches planifiées. |
| Licences et projets | Le statut d'une licence d'après son abonnement, le quota, les projets, les identifiants, la révocation. |
| Connecteurs et Verdaccio | Choisir le fournisseur, installer le plugin Verdaccio, écrire son propre connecteur. |
| Modèle de données | Les cinq tables fraza_licenses_*. |
| API | Routes HTTP, fonctions serveur importables et sous-entrée de l'espace client. |
Ce que le module apporte
| Élément | Détail |
|---|---|
| Tables | Cinq, toutes préfixées fraza_licenses_. |
| Entrée d'admin | Section « Licences », icône TicketIcon, ordre 155, deux items : Licences et Quotas. |
| Permissions | licenses.view et licenses.manage. |
| Routes API | 8 routes d'admin, 4 routes de compte, 1 route pour le registre. |
| Espace client | La 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ées | Deux : la synchronisation des identifiants, chaque minute, et la révocation des licences suspendues, chaque nuit. |
| Événements écoutés | Les huit événements subscription.* de Facturation. Voir Licences et projets. |
| Plugin Verdaccio | verdaccio/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
versiondu manifeste suit la version du paquet, recopiée parfraza-module sync-version.