Aller au contenu principal

Cycle de vie des utilisateurs et des tenants

Cette page décrit ce qui se passe, et à quel moment, dans les deux cycles de vie qui comptent le plus : celui des personnes que vous ajoutez à votre organisation, et celui de l’organisation elle-même. Dans les deux cas, la destruction n’est irréversible que lorsqu’elle doit l’être (après le délai de conservation) ; chaque étape qui la précède peut être annulée.

Cycle de vie d’un utilisateur

Un utilisateur n’existe dans fremforge qu’en tant que membre d’une ou de plusieurs organisations. Le retirer d’une organisation est une action propre à chaque tenant ; son compte entier n’est désactivé que lorsqu’il est retiré de sa dernière organisation.

Retrait d’une seule organisation

Vous retirez un membre de votre organisation soit manuellement (la section de gestion des utilisateurs dans Facturation liste chaque membre avec sa dernière activité, permet le retrait groupé et propose une politique de nettoyage automatique à activer), soit par le déprovisionnement SCIM depuis votre IdP. Le comportement est le même dans les deux cas :

  1. L’événement Forgejo org_member.removed est déclenché.
  2. fremforge recalcule seats_in_use à partir de la liste des membres en direct de Forgejo et émet un événement d’audit tenant.seat.released. La place libérée est immédiatement disponible pour votre prochaine invitation ou la prochaine connexion SSO-JIT.
  3. Tous les PAT limités à l’organisation que l’utilisateur sortant détient pour ce tenant sont révoqués.
  4. S’il s’agissait de sa dernière organisation, le processus de désactivation des comptes orphelins décrit ci-dessous prend le relais.

Votre nombre d’utilisateurs contractuel n’est jamais réduit par le nettoyage. seats_in_use baisse ; le plafond reste entier. Pour réduire le plafond, utilisez la page Facturation (les réductions du nombre d’utilisateurs prennent effet au prochain renouvellement ; le prépaiement annuel n’est pas remboursable, conformément aux conditions §4.7).

Nettoyage automatique des comptes inactifs

La page Membres permet à un propriétaire de définir un seuil d’inactivité (désactivé par défaut). Une fois celui-ci défini, une tâche quotidienne retire les membres dont le last_login Forgejo est plus ancien que le seuil. Les propriétaires, les comptes opérateur et les comptes de bot ne sont jamais retirés automatiquement ; un plancher par tenant (30 jours par défaut) évite d’exclure par accident des membres partis longtemps. La tâche quotidienne est limitée à 50 retraits par tenant et par jour : un frein de sécurité pour qu’une politique mal configurée ne puisse pas vider toute une organisation en une seule passe.

Désactivation des comptes orphelins (dernière organisation)

Lorsque le retrait par tenant ci-dessus laisse un utilisateur sans aucune appartenance à une organisation, tous tenants confondus, fremforge automatiquement :

  1. Définit prohibit_login=true sur l’utilisateur Forgejo (plus de connexion par SSO ni par identifiants locaux).
  2. Révoque tous les PAT Forgejo dont l’utilisateur est propriétaire, où qu’ils soient.
  3. Archive, sans les supprimer, les dépôts de l’espace de noms personnel dont l’utilisateur est propriétaire. L’archivage conserve l’historique ; le client peut les restaurer en invitant à nouveau l’utilisateur avant la fin du délai de 14 jours précédant la suppression définitive.
  4. Enregistre la désactivation dans le registre orphaned_users avec cleanup_due_at = today + 14 days.

Inviter à nouveau l’utilisateur dans n’importe quelle organisation pendant ce délai de 14 jours le restaure : prohibit_login est levé, les PAT peuvent être recréés, et la pierre tombale de l’orphelin reçoit un horodatage restored_at pour que la tâche de suppression définitive l’ignore.

Suppression définitive (orphelin + 14 jours)

Une tâche quotidienne supprime définitivement les comptes Forgejo désactivés comme orphelins depuis plus de 14 jours et qui n’ont pas été invités à nouveau pendant ce délai. Quatorze jours permettent de faire tenir toute la suppression, y compris les copies en stockage conservées 7 jours après une suppression, dans les 30 jours que la politique de confidentialité §6 promet pour les données de compte. L’appel Forgejo DELETE /api/v1/admin/users/{u} supprime le compte utilisateur ; les dépôts personnels archivés de l’utilisateur sont supprimés par voie de conséquence. Le journal d’audit conserve un événement forgejo.user.orphan_hard_deleted rattaché au tenant à l’origine du processus, à des fins de traçabilité.

Après la suppression définitive, le nom d’utilisateur et l’historique du compte ont disparu. Aucune récupération n’est possible au-delà du délai de 14 jours ; provisionnez un nouvel utilisateur depuis votre IdP si nécessaire.

Cycle de vie d’un tenant

Un tenant passe par cinq états. La machine à états ne revient jamais en arrière, sauf pour l’annulation cancellation_scheduled → active et la réactivation suspended → active.

ÉtatDéclencheurSignification
trialInscriptionLes 30 premiers jours, sans carte bancaire. La tâche de suspension des essais passe le tenant à suspended s’il n’est pas converti avant trial_expires_at.
activeDébut d’une formule payanteFonctionnement normal.
suspendedRelance au-delà de J+14, ou essai expiréL’accès en écriture est suspendu ; la lecture, l’export et la réactivation fonctionnent toujours.
cancellation_scheduledRésiliation demandée par le clientLe service continue jusqu’à cancel_effective_at. L’annulation ramène à active à tout moment avant cette date.
cancelledcancel_effective_at atteintL’organisation Forgejo passe en lecture seule. Période de 90 jours pour exporter et réactiver.
deletedcancel_effective_at + 90dL’organisation Forgejo et les données personnelles sont détruites définitivement. Un certificat de destruction est émis.

Résiliation demandée

Lorsque vous cliquez sur Résilier l’abonnement sur la page Facturation :

  • Le statut passe à cancellation_scheduled et cancel_effective_at est défini (engagement mensuel : + 30 jours ; engagement annuel : la date de fin de l’engagement prépayé ; l’annuel n’est pas remboursable, conformément aux conditions §4.7).
  • Tout dépassement en cours est réglé sur le moyen de paiement actif.
  • Le mandat SEPA Mollie est révoqué afin qu’aucun autre prélèvement automatique n’ait lieu.
  • Un e-mail de confirmation est envoyé à chaque destinataire de billing_emails. La page Facturation affiche alors une bannière de compte à rebours avec la date de fin de la lecture seule, un appel à l’action pour exporter les données et un bouton d’annulation.

Le bouton Annuler la résiliation reste disponible jusqu’à cancel_effective_at, puis de nouveau pendant la période de 90 jours en lecture seule grâce au bouton Réactiver l’abonnement (un nouveau moyen de paiement est configuré par le paiement standard).

Résiliation effective (+ 0 jour)

À cancel_effective_at, la tâche quotidienne cancellation-effect passe le statut à cancelled et archive chaque dépôt de l’organisation Forgejo (lecture seule). L’organisation elle-même reste, les données restent : l’accès en écriture est suspendu partout sauf dans Facturation (pour la réactivation) et dans Export de données (pour la portabilité).

Suppression définitive (+ 90 jours)

Quatre-vingt-dix jours après la prise d’effet de la résiliation, la même tâche quotidienne procède à l’effacement physique. Conditions que la suppression respecte ; une seule d’entre elles suffit à bloquer la purge pour la journée :

  • legal_hold = true sur le tenant (un indicateur de conservation défini par l’opérateur pour les ordonnances de conservation à des fins judiciaires).
  • Une tâche d’export encore en file d’attente ou en cours.
  • Un paiement en cours (statut de webhook Mollie open, pending ou authorized).

Lorsque toutes les conditions sont levées, fremforge :

  1. Émet l’événement d’audit tenant.physically_deleted (enregistré tant que le périmètre du tenant est encore valide, afin que la chaîne d’audit consigne l’action).
  2. Révoque le compte de bot Renovate propre au tenant et révoque son PAT.
  3. Purge les tâches de livraison de webhooks en file d’attente pour le tenant.
  4. Supprime l’organisation Forgejo : dépôts, objets LFS et tout l’état de l’organisation en cascade.
  5. Supprime la fiche client Mollie.
  6. Efface les données personnelles du tenant (nom d’affichage, e-mail du contact de facturation, e-mails de facturation, références Mollie/Dinero, numéro de TVA) et marque le tenant comme supprimé.
  7. Génère le PDF du certificat de destruction (voir ci-dessous) et l’archive dans OBS, dans le bucket protégé par la conservation légale. Envoie le certificat par e-mail à l’adresse du contact de facturation enregistrée.

Certificat de destruction

Un PDF d’une page, généré au moment de la suppression physique et envoyé par e-mail au contact de facturation. Il consigne :

  • Le slug de l’organisation, le nom d’affichage, le numéro de TVA et l’identifiant du tenant.
  • La date de prise d’effet de la résiliation et la date de suppression définitive.
  • Les catégories de données détruites (contenu Forgejo, configuration du tenant, comptes membres limités au tenant, contenus d’audit, données personnelles de facturation).
  • Les exceptions de conservation résiduelles qui s’appliquent encore (voir ci-dessous).
  • Un hachage d’ancrage SHA-256 qui associe le certificat à l’événement d’audit tenant.physically_deleted pour une vérification croisée.

Si vous avez besoin plus tard d’une nouvelle copie, l’archive se trouve dans un bucket OBS verrouillé en WORM : écrivez à compliance@frem.sh et nous la réémettrons depuis l’archive.

Délais de conservation (DPA §9)

Délai depuis la résiliationCe qui se passe
+ 0 jour (cancel_effective_at)Statut → cancelled. Organisation Forgejo archivée, en lecture seule. Export et réactivation possibles.
+ 90 joursStatut → deleted. Organisation Forgejo supprimée physiquement ; ses fichiers (LFS, pièces jointes, paquets, avatars) restent sous forme d’anciennes versions dans le stockage objet pendant 7 jours de plus et ont disparu vers + 102 jours, dans les 30 jours qu’autorise le DPA §9. Données personnelles effacées. Fiche client Mollie supprimée. Certificat de destruction émis. La même nuit, les données personnelles des événements d’audit du tenant sont pseudonymisées (acteur et contenu effacés ; la chaîne de hachage reste vérifiable). Si une condition de suppression retient l’effacement (un export ou un paiement en cours, une conservation légale) ou s’il échoue, il est retenté chaque nuit, et la pseudonymisation suit la nuit où l’effacement aboutit.
+ 150 jours (jusqu’au 2026-11-03)Jusqu’au 2026-11-03 : les sauvegardes contenant le tenant sont purgées au plus tard à + 150 jours (DPA 1.39 §9).
jusqu’à + 210 jours (à partir du 2026-11-03)À partir du 2026-11-03 (DPA 1.41 §9) : les sauvegardes ne sont pas modifiées tenant par tenant, de sorte que les données supprimées restent dans les sauvegardes chiffrées jusqu’à leur expiration, au plus 90 jours après la suppression et au plus tard à + 210 jours après la résiliation.

Exceptions résiduelles

Certaines catégories de données sont soumises à une conservation légale qui survit à la suppression principale à + 90 jours. Elles sont documentées dans le DPA §9 et reprises sur le certificat de destruction :

  • Pièces comptables (factures, pièces justificatives jointes) : conservées 5 ans, conformément au Bogføringsloven §10.
  • Métadonnées du journal d’audit : conservées 3 ans, pseudonymisées lors de la suppression (+ 90 jours, ou la nuit où un effacement retardé aboutit) ; aucun contenu de dépôt, aucune donnée personnelle.
  • Objets de conformité verrouillés en WORM (ancres de la chaîne d’audit, le PDF du certificat de destruction lui-même) : conservés jusqu’à l’expiration de la période de verrouillage. Exception documentée dans l’annexe du DPA §9.

Conservation légale

Les opérateurs peuvent définir legal_hold = true sur un tenant en réponse à une ordonnance de conservation (assignation, enquête RGPD, litige). Tant qu’il est défini, la tâche cancellation-effect ignore entièrement le tenant : pas de suppression physique, pas d’effacement des données personnelles, pas de purge des sauvegardes. L’indicateur est réservé aux opérateurs ; les clients ne peuvent pas le modifier.

La conservation suspend aussi la suppression de chaque catégorie de conservation des preuves tant que l’organisation est active : expurgation des contenus d’audit, conservation du journal d’accès, résultats résolus, SBOM, attestations, enregistrements d’export et effacement des résultats des pull requests fermées (depuis le 2026-10-08 ; auparavant, l’expurgation des contenus d’audit et l’élagage des SBOM ne tenaient pas compte de la conservation).

Questions fréquentes

Mon utilisateur apparaît comme utilisé alors que le membre est parti. La liste des membres de Forgejo exclut les utilisateurs avec prohibit_login=true ; un utilisateur désactivé après sa dernière organisation n’est donc pas compté dans votre seats_in_use. Si votre chiffre semble obsolète, la tâche nocturne seat-cap-drift-check le recalcule.

Réduire le nombre d’utilisateurs me donne-t-il droit à un remboursement ? Non : les réductions du nombre d’utilisateurs prennent effet au prochain cycle de facturation (mensuel) ou au renouvellement annuel (annuel). Le prépaiement annuel n’est pas remboursable, conformément aux conditions §4.7. Voir Facturation pour le formulaire du nombre d’utilisateurs.

Puis-je récupérer mes données après la période de 90 jours ? Non. À ce stade, elles ont déjà disparu (organisation Forgejo, dépôts, LFS, membres, données personnelles). Les copies dans les sauvegardes chiffrées disparaissent au plus tard à + 150 jours jusqu’au 2026-11-03 ; à partir du 2026-11-03 (DPA 1.41), elles expirent avec les instantanés, au plus tard à + 210 jours. Prévoyez vos exports pendant la période en lecture seule : la page Facturation affiche un appel à l’action d’export précisément pour cette raison.

L’effacement au titre de l’article 17 du RGPD a-t-il lieu à la résiliation ou à + 90 jours ? C’est à + 90 jours que le stockage principal est effacé. Les sauvegardes suivent : jusqu’au 2026-11-03, elles sont purgées au plus tard à + 150 jours après la résiliation ; à partir du 2026-11-03 (DPA 1.41 §9), les données supprimées expirent avec les instantanés chiffrés, au plus 90 jours après la suppression et au plus tard à + 210 jours. Le certificat de destruction est le document que vous pouvez présenter à votre autorité de contrôle.

Et si je résilie par erreur ? Cliquez sur Annuler la résiliation sur la page Facturation : cela fonctionne pendant tout le délai de grâce (jusqu’à cancel_effective_at). Ensuite, la période en lecture seule vous donne 90 jours de plus pour réactiver via le paiement standard. Au-delà de + 90 jours, aucune récupération n’est possible.