Configuration
Variables d'environnement du module de licences, permissions, entrée d'admin et tâches planifiées.
Le module se règle par des variables d'environnement, lues une fois au démarrage. Toutes sont déclarées dans manifest.envVars, ce qui permet à fraza-doctor de les reconnaître.
Variables d'environnement
| Variable | Défaut | Rôle |
|---|---|---|
FRAZA_MODULE_LICENSES | Active le module (true). Sans elle, il n'enregistre rien : ni routes, ni menu, ni section client, ni tâches, ni gestionnaires d'événements. | |
FRAZA_MODULE_LICENSES_CRON | true | Enregistre les deux tâches planifiées. À false sur une instance, une autre doit les faire tourner. |
FRAZA_MODULE_LICENSES_CONNECTOR | verdaccio | Le fournisseur de licence des nouveaux projets : verdaccio, livré avec le module, ou la clé d'un connecteur enregistré par le projet. Voir Connecteurs et Verdaccio. |
FRAZA_MODULE_LICENSES_REGISTRY_URL | L'adresse de votre registre, https://registry.exemple.ca/ par exemple, écrite dans les lignes .npmrc données au client. À renseigner avec le connecteur verdaccio : sans elle, le client ne reçoit que sa clé, sans ligne à coller. | |
FRAZA_MODULE_LICENSES_REGISTRY_SECRET | Le secret partagé avec le plugin Verdaccio. Obligatoire avec le connecteur verdaccio : sans lui, la route que le plugin appelle répond 404, et aucune clé ne passe. | |
FRAZA_MODULE_LICENSES_REGISTRY_GROUPS | licenses | Les groupes Verdaccio donnés à un projet actif, séparés par des virgules. Une règle packages du registre peut réserver un scope à ces groupes. Avec access: $authenticated, ils ne changent rien. |
FRAZA_MODULE_LICENSES_REGISTRY_KEY_PREFIX | fzk_ | Le début de chaque clé de projet : 2 à 16 lettres minuscules ou chiffres, puis _, acme_ par exemple. Le même que key_prefix du plugin Verdaccio. Une valeur invalide est remplacée par fzk_, et le démarrage le signale. Changer de préfixe ne coupe pas les clés déjà données, tant que le plugin les laisse passer. |
FRAZA_MODULE_LICENSES_REGISTRY_SCOPES | Les scopes npm servis par le registre, séparés par des virgules, @mon-scope par exemple. Chacun devient une ligne @scope:registry=<adresse> du .npmrc donné au client, avant la ligne de la clé. Un scope mal formé est ignoré. Vide : aucune ligne de scope. | |
FRAZA_MODULE_LICENSES_REVOKE_AFTER_DAYS | 365 | Jours de suspension avant la révocation définitive d'une licence et de ses projets, de 0 à 3650. 0 ne révoque jamais. |
Au démarrage, le journal avertit quand aucun connecteur ne porte la clé de FRAZA_MODULE_LICENSES_CONNECTOR, et quand le connecteur verdaccio n'a pas de secret ou pas d'adresse de registre. Le site démarre quand même ; la création d'un projet est alors refusée (connector_unavailable).
Permissions
| Permission | Donne accès à |
|---|---|
licenses.view | La liste des licences, la page d'une licence, les quotas. |
licenses.manage | Les quotas des offres, la suspension, le rétablissement, le retrait d'un projet, la régénération d'un identifiant (la clé, avec Verdaccio), la synchronisation immédiate, la révocation d'une licence suspendue. Les détenteurs reçoivent aussi l'alerte d'usage raisonnable. |
Entrée d'admin
Une section « Licences » (icône TicketIcon, ordre 155), avec deux items réservés à licenses.view :
| Item | Chemin | Contenu |
|---|---|---|
| Licences | /admin/licenses/licenses | Les licences par statut, avec cinq compteurs : actives, paiement en retard, en attente du paiement, suspendues, identifiants à synchroniser. |
| Quotas | /admin/licenses/plans | Une ligne par offre de Facturation : licence ou non, quota, seuil d'usage raisonnable. |
La page d'une licence montre son client et son abonnement (liens vers Facturation), son offre et son quota, un changement d'offre programmé, ses projets avec l'état de leur identifiant chez le fournisseur et la dernière erreur, et son historique.
Tâches planifiées
| Tâche | Quand | Ce qu'elle fait |
|---|---|---|
licenses-sync | Chaque minute | Applique chez le connecteur l'état voulu de chaque identifiant qui ne l'a pas encore. Voir La synchronisation. |
licenses-maintenance | Chaque nuit, 03 h 15 | Révoque les licences suspendues depuis plus de FRAZA_MODULE_LICENSES_REVOKE_AFTER_DAYS jours. |
Les deux passent par le verrou de @fraza/core/cron : plusieurs instances n'en exécutent qu'une copie à la fois. Après une action du client, la synchronisation est aussi lancée tout de suite, sur une instance qui fait tourner les tâches.