Files
decision/docs/adr/0006-acces-connect-trustinwallet.md
T

46 lines
3.5 KiB
Markdown

# 0006 — Accès : connect.monnaie-libre.fr, invitations, trustinWallet
**Contexte.** « Le même accès que pour le forum Monnaie libre », « toute personne avec une clé
Duniter peut se loger et tout faire — sauf la gestion des accès », qui revient à trustinWallet
(nouveau nom de trustWallet, déjà pris).
**Décision.**
- Connexion Ğ1 : libreDecision est client OAuth2 de connect.monnaie-libre.fr (comme le forum).
Le compte est la clé d'identité (`idty:N`) ; on garde le nom affiché et le statut de membre.
- En attendant l'inscription du client : liens d'invitation à usage unique (14 jours), le
secret dans le fragment de l'URL (jamais dans les journaux du serveur). Un administrateur
peut redonner un lien à une personne invitée (autre appareil, session perdue).
- **Liens d'équipe** (Yvv, 2026-10-21 : « je vais l'utiliser plein de fois, pendant tout le
dev, et la partager avec une équipe ») : un lien réutilisable jusqu'à une date (90 jours au
plus) et pour un nombre de personnes (500 au plus), révocable. Chaque ouverture demande un
nom et crée **sa propre** identité d'invitation, jamais administratrice. Un nom déjà pris est
refusé, quelle que soit sa tenue (casse, accents, ponctuation : `ld_engine::names`, index
unique) ; un nom s'écrit en lettres latines, chiffres, espace, trait d'union, apostrophe ou
point (pas de sosie cyrillique, grec ou pleine chasse). Une personne déjà connectée garde son
identité et reçoit les groupes ; elle ne prend une place que si le lien lui en ajoute un ; sur
un navigateur partagé, « Ce n'est pas moi » la déconnecte. Un nom qu'une invitation attend
est protégé aussi.
- Tout auteur venu par invitation porte la mention **« sur invitation »** à côté de son nom
(propositions, révisions, signalements) : un nom pris avant l'arrivée de son titulaire Ğ1, ou
une lettre sosie, ne passe jamais pour un membre de la toile.
trustinWallet montre par quel lien chaque identité est venue. Limite assumée : une même
personne qui l'ouvre deux fois, sous deux noms, a deux identités — sans effet dans Monnaie
libre (seule la toile vote), à surveiller dans le groupe d'essai.
- Sessions : cookie HttpOnly, SameSite=Lax, Secure en https (`__Host-`), jeton haché en base ;
en-tête anti-CSRF sur toute écriture. Une session dure **jusqu'à ce qu'on la ferme** : 400 jours
(ce qu'un navigateur garde au plus), recomptés à chaque visite, une fois par jour au plus. On la
ferme en se déconnectant, ou un administrateur ferme dans trustinWallet les sessions d'une
identité (appareil perdu, départ), jamais celle d'où il agit. (D'abord 30 jours fixes, changé le
2026-10-23 : une personne invitée n'a pas de clé Ğ1 pour revenir, et une session expirée lui
coûtait un nouveau lien.)
- Les règles (qui voit, qui ouvre, qui administre) vivent dans `trustin-access`, futur cœur du
service trustinWallet ; le serveur ne décide jamais seul.
- **Une personne, une voix** : là où l'électorat est la toile de confiance (Monnaie libre),
seuls ses membres votent ; une identité d'invitation y lit et propose. Un nouveau lien ne
vise jamais une identité Ğ1 (un administrateur ouvrirait une session à sa place).
- Premier administrateur : un lien d'invitation écrit au premier démarrage dans le volume de
données (0600), jamais dans les journaux.
**Coût.** Tant que connect n'est pas branché, chaque testeuse a besoin d'un lien. Quand
trustinWallet deviendra un service, `trustin-access` deviendra son client.