Hiboo issueshttps://forge.tedomum.net/acides/hiboo/-/issues2024-03-24T14:34:32Zhttps://forge.tedomum.net/acides/hiboo/-/issues/134Uniformiser les routes2024-03-24T14:34:32ZornanovitchUniformiser les routesCes derniers temps, divers sujets à traiter (authentification, dialogue de confirmation, vue de modération...) nous ont conduit avec @f00wl à questionner un certain nombre de routes, qui ne nous semblaient pas toujours cohérentes ou prat...Ces derniers temps, divers sujets à traiter (authentification, dialogue de confirmation, vue de modération...) nous ont conduit avec @f00wl à questionner un certain nombre de routes, qui ne nous semblaient pas toujours cohérentes ou pratiques à manipuler. En dézoomant un peu, j'ai remarqué qu'il n'y avait pas de convention de routage unique, et que plusieurs logiques se sont chevauchées avec le temps. Parmi les « problèmes » qu'on peut identifier dans l'état actuel :
- les collections sont au singulier (`profile`, `user`, `service`)
- les `uuid` sont très souvent en bout de route, mais pas systématiquement, là où une syntaxe `<collection>/<uuid>/<...>` (où est-on / sur quoi lit-on ou fait-on quelque chose) serait envisageable
Une unification systématique avec des conventions de routage ne répondrait pas seulement à un enjeu esthétique, mais permettrait de se rapprocher des bonnes pratiques de type REST, et de rendre plus compréhensive l'exploration du code autant que de l'interface web lors du développement.
Un autre sujet, peut-être moins consensuel, concerne les profiles. Plus je me plonge et replonge dans le code de Hiboo, plus je me convainc qu'en termes de pure logique, `profiles` est une sous-collection de `services`, dans la mesure où un profile ne peut pas exister en dehors d'un service, tandis qu'il peut exister en dehors d'un user (`UNCLAIMED`). Par exemple, je trouve qu'une route `/services/<service_uuid>/profiles` informe mieux que `/profile/list/service/<service_uuid>`.
J'ai bossé dans une branche sur un PoC de ce à quoi pourrait ressembler une alternative (basée sur la branche de !79 histoire de résoudre une limitation de ma proposition pour les profiles) :
Endpoint | Before | After
------------------------------------ | ----------------------------------------------------------- | --------------------------------------------
account.contact | [- /account/contact -] | [+ /account/settings/contact +]
account.home | /account/home | /account/home
account.password | [- /account/auth/password -] | [+ /account/settings/auth/password +]
account.password_reset | /account/auth/password/reset | /account/auth/password/reset
account.profiles | /account/profiles | /account/profiles
account.signin_password | [- /account/signin/password -] | [+ /account/auth/password +]
account.signin_totp | [- /account/signin/totp -] | [+ /account/auth/totp +]
account.signout | [- /account/signout -] | [+ /account/auth/signout +]
account.signup | [- /account/signup -] | [+ /account/auth/signup +]
account.totp | [- /account/auth/totp -] | [+ /account/settings/auth/totp +]
account.totp_disable | [- /account/auth/totp/disable -] | [+ /account/settings/auth/totp/disable +]
account.totp_enable | [- /account/auth/totp/enable -] | [+ /account/settings/auth/totp/enable +]
account.totp_reset | /account/auth/totp/reset | /account/auth/totp/reset
api.profile_email | [- /api/profile/<profile_uuid>/email -] | [+ /api/profiles/<profile_uuid>/email +]
index | / | /
moderation.board | /moderation/ | /moderation/
profile.action | [- /profile/action/<profile_uuid>/<action\> -] | [+ /services/<service_uuid>/profiles/<profile_uuid>/<action\> +]
profile.assign | [- /profile/assign/<profile_uuid> -] | [+ /services/<service_uuid>/profiles/<profile_uuid>/assign +]
profile.cancel_transition | [- /profile/transition/<profile_uuid>/cancel -] | [+ /services/<service_uuid>/profiles/<profile_uuid>/transition/cancel +]
profile.claim | [- /profile/claim/<service_uuid> -] | [+ /services/<service_uuid>/profiles/claim +]
profile.complete_transition | [- /profile/transition/<profile_uuid>/complete -] | [+ /services/<service_uuid>/profiles/<profile_uuid>/transition/complete +]
profile.create | [- /profile/create/<service_uuid> -] | [+ /services/<service_uuid>/profiles/create +]
profile.create_for | [- /profile/create_for/<service_uuid> -] | [+ /services/<service_uuid>/profiles/create-for +]
profile.create_quick | [- /profile/create_quick/<service_uuid> -] | [+ /services/<service_uuid>/profiles/create-quick +]
profile.details | [- /profile/details/<profile_uuid> -] | [+ /services/<service_uuid>/profiles/<profile_uuid> +]
profile.list_for_service | [- /profile/list/service/<service_uuid> -] | [+ /services/<service_uuid>/profiles/ +]
profile.pick | [- /profile/pick/<service_uuid> -] | [+ /services/<service_uuid>/profiles/pick +]
profile.start_transition | [- /profile/transition/<profile_uuid>/<transition_id> -] | [+ /services/<service_uuid>/profiles/<profile_uuid>/transition/<transition_id> +]
profile.unclaimed_export_for_service | [- /profile/unclaimedexport/service/<service_uuid>.csv -] | [+ /services/<service_uuid>/profiles/unclaimed.csv +]
service.action | [- /service/action/<service_uuid>/<action\> -] | [+ /services/<service_uuid>/<action\> +]
service.create | [- /service/create/<application_id> -] | [+ /services/<application_id>/create +]
service.create_select | [- /service/create -] | [+ /services/create +]
service.delete | [- /service/delete/<service_uuid> -] | [+ /services/<service_uuid>/delete +]
service.details | [- /service/details/<service_uuid> -] | [+ /services/<service_uuid> +]
service.edit | [- /service/edit/<service_uuid> -] | [+ /services/<service_uuid>/edit +]
service.edit | [- /service/edit -] | [+ /services/edit +]
service.list | [- /service/list -] | [+ /services/ +]
service.setapp | [- /service/setapp/<service_uuid>/<application_id> -] | [+ /services/setapp/<service_uuid>/<application_id> +]
service.setapp_select | [- /service/setapp/<service_uuid> -] | [+ /services/<service_uuid>/setapp +]
sso.oidc_authorize | /sso/oidc/<service_uuid>/authorize | /sso/oidc/<service_uuid>/authorize
sso.oidc_authorize | /sso/oidc/authorize/<service_uuid> | /sso/oidc/authorize/<service_uuid>
sso.oidc_discovery | /sso/oidc/<service_uuid>/.well-known/openid-configuration | /sso/oidc/<service_uuid>/.well-known/openid-configuration
sso.oidc_issuer | /sso/oidc/<service_uuid> | /sso/oidc/<service_uuid>
sso.oidc_jwks | /sso/oidc/<service_uuid>/jwks | /sso/oidc/<service_uuid>/jwks
sso.oidc_token | /sso/oidc/<service_uuid>/token | /sso/oidc/<service_uuid>/token
sso.oidc_token | /sso/oidc/token/<service_uuid> | /sso/oidc/token/<service_uuid>
sso.oidc_userinfo | /sso/oidc/<service_uuid>/userinfo | /sso/oidc/<service_uuid>/userinfo
sso.oidc_userinfo | /sso/oidc/userinfo/<service_uuid> | /sso/oidc/userinfo/<service_uuid>
sso.saml_metadata | /sso/saml/metadata/<service_uuid>.xml | /sso/saml/metadata/<service_uuid>.xml
sso.saml_redirect | /sso/saml/redirect/<service_uuid> | /sso/saml/redirect/<service_uuid>
static | /static/<path:filename> | /static/<path:filename>
user.contact_check | [- /user/contact/check/<user_uuid> -] | [+ /users/<user_uuid>/contact-checking +]
user.details | [- /user/details/<user_uuid> -] | [+ /users/<user_uuid> +]
user.invite | [- /user/invite -] | [+ /users/invitation +]
user.list | [- /user/list -] | [+ /users/ +]
user.password_reset | [- /user/auth/password/reset/<user_uuid> -] | [+ /users/<user_uuid>/auth/password/reset +]
user.pick | [- /user/pick -] | [+ /users/pick +]
user.totp_reset | [- /user/auth/totp/reset/<user_uuid> -] | [+ /users/<user_uuid>/auth/totp/reset +]backloghttps://forge.tedomum.net/acides/hiboo/-/issues/133Tests d'intégration authentification SAML2+OIDC2024-01-31T06:43:11Zkaiyoupierre@jaury.euTests d'intégration authentification SAML2+OIDCAfin de diminuer la barrière de contribution, nous avons besoin d'automatiser les tests les plus basiques et de détecter plus tôt les grosses régressions.
Première étape, testant les scénarios :
- SAML2 :
- Authentification admin
-...Afin de diminuer la barrière de contribution, nous avons besoin d'automatiser les tests les plus basiques et de détecter plus tôt les grosses régressions.
Première étape, testant les scénarios :
- SAML2 :
- Authentification admin
- Création d'un service SAML2
- Création d'un compte user
- Création d'un profil
- Authentification sur un SP simulé
- OIDC : identique en OIDC.0.1.1 (reboot)kaiyoupierre@jaury.eukaiyoupierre@jaury.euhttps://forge.tedomum.net/acides/hiboo/-/issues/132Mettre à jour le README2024-01-24T12:34:42ZJae Lo PrestiMettre à jour le READMEJe pense qu'il serait temps de mettre à jour le README vu qu'il date un peut et redirige vers des liens morts (notamment les `*.test.tedomum.net`).
Tout ce qui concerne le déploiement pourrait être gardé mais reformaté en attendant un m...Je pense qu'il serait temps de mettre à jour le README vu qu'il date un peut et redirige vers des liens morts (notamment les `*.test.tedomum.net`).
Tout ce qui concerne le déploiement pourrait être gardé mais reformaté en attendant un meilleur moyen de documenter tout ca.
Related issues:
- #33
- #1200.2.0https://forge.tedomum.net/acides/hiboo/-/issues/131Bouton "Se souvenir de moi" ne fonctionne pas avec 2FA2024-01-22T17:24:19ZJae Lo PrestiBouton "Se souvenir de moi" ne fonctionne pas avec 2FALe bouton "Se souvenir de moi" n'a aucun effet quand 2FA est activé.
Pour reproduire:
- Aller `forge.tedomum.net` ce qui me redirige vers `auth.tedomum.net`
- Se connecter en cliquant sur "Se souvenir de moi" et entrer le code 2FA
- Acc...Le bouton "Se souvenir de moi" n'a aucun effet quand 2FA est activé.
Pour reproduire:
- Aller `forge.tedomum.net` ce qui me redirige vers `auth.tedomum.net`
- Se connecter en cliquant sur "Se souvenir de moi" et entrer le code 2FA
- Accéder a la forge
- Fermer son navigateur web
- Attendre une heure ou deux
- Aller sur `forge.tedomum.net` ou `auth.tedomum.net`
- Rien n'est connecté
Peut aussi être reproduit avec un simple login sur `auth.tedomum.net`.
Notes:
Quand j'ai fait l'implémentation originale du "Se souvenir de moi", le bouton fonctionnait bien mais je n'utilisait pas de 2FA (pas encore implémenté à l'époque).
Testé sur Firefox 121.0.1 sans add-ons affectant les cookies ou autres stockages.1.0.0f00wlf00wlhttps://forge.tedomum.net/acides/hiboo/-/issues/130Améliorer le dialogue de confirmation2024-03-12T17:46:49ZornanovitchAméliorer le dialogue de confirmationil faudrait améliorer l'ensemble de la logique de confirmation pour une action, pour pouvoir :
* passer un paramètre qui rappelle ce sur quoi on agit dans le template (tel profil, tel user...)
* ajouter un bouton `cancel` (actuellement,...il faudrait améliorer l'ensemble de la logique de confirmation pour une action, pour pouvoir :
* passer un paramètre qui rappelle ce sur quoi on agit dans le template (tel profil, tel user...)
* ajouter un bouton `cancel` (actuellement, une à confirmer peut être annulée uniquement en retournant en arrière via le navigateur)backlogornanovitchornanovitchhttps://forge.tedomum.net/acides/hiboo/-/issues/129Veille des dépendances2024-01-21T12:07:42Zf00wlVeille des dépendancesPour nous faciliter et formaliser le suivit des dépendances qui peut être fastidieux mais crucial, je propose d'utiliser https://gitlab.com/renovate-bot/renovate-runner/. C'est un peu une usine à gaze mais c'est très efficace. Peut-être ...Pour nous faciliter et formaliser le suivit des dépendances qui peut être fastidieux mais crucial, je propose d'utiliser https://gitlab.com/renovate-bot/renovate-runner/. C'est un peu une usine à gaze mais c'est très efficace. Peut-être ça pourra servir pour les autres projet de tedomum aussi.
_Il est aussi possible de faire la veille juste avec un protocole claire entre les devs._backloghttps://forge.tedomum.net/acides/hiboo/-/issues/128Protocole de release2024-01-21T12:05:06Zf00wlProtocole de releaseÀ partir de %"0.1.1 (reboot)" hiboo sera officiellement release, avec la norme [semver](https://semver.org/). Il faut donc décider d'une façon de le faire bien. Soit à la main avec un protocole claire. Soit automatiquement avec un outils...À partir de %"0.1.1 (reboot)" hiboo sera officiellement release, avec la norme [semver](https://semver.org/). Il faut donc décider d'une façon de le faire bien. Soit à la main avec un protocole claire. Soit automatiquement avec un outils comme https://github.com/semantic-release/semantic-release.0.1.1 (reboot)https://forge.tedomum.net/acides/hiboo/-/issues/127Changer le nom de la branche principale de master à main2024-01-22T18:45:49Zf00wlChanger le nom de la branche principale de master à main`main` est maintenant le nom par défaut de la branche principale de git (pour des [raisons étiques](https://sfconservancy.org/news/2020/jun/23/gitbranchname/)). Ce serait top de faire ça avant %"0.2.0"`main` est maintenant le nom par défaut de la branche principale de git (pour des [raisons étiques](https://sfconservancy.org/news/2020/jun/23/gitbranchname/)). Ce serait top de faire ça avant %"0.2.0"0.2.0https://forge.tedomum.net/acides/hiboo/-/issues/126Documentation contribution2024-01-20T19:58:31Zf00wlDocumentation contribution0.2.0https://forge.tedomum.net/acides/hiboo/-/issues/125Documentation utilisation2024-01-20T19:58:32ZornanovitchDocumentation utilisation1.0.0https://forge.tedomum.net/acides/hiboo/-/issues/124backlog2024-01-20T17:49:11Zornanovitchbackloghttps://forge.tedomum.net/acides/hiboo/-/issues/123Suppoter l'authentification Webauthn2024-01-20T19:48:54Zkaiyoupierre@jaury.euSuppoter l'authentification WebauthnEn complément de l'authentification 2FA, Webauthn est de plus en plus populaire, en particulier sur mobile. Le supporter en tant qu'authentification principale serait un plus.
Cela nécessitera probablement de revoir l'architecture d'aut...En complément de l'authentification 2FA, Webauthn est de plus en plus populaire, en particulier sur mobile. Le supporter en tant qu'authentification principale serait un plus.
Cela nécessitera probablement de revoir l'architecture d'authentification, bien que déjà assez souple sur le principe.backloghttps://forge.tedomum.net/acides/hiboo/-/issues/122Fournir des refresh tokens OIDC2024-01-20T19:47:40Zkaiyoupierre@jaury.euFournir des refresh tokens OIDCOIDC et OAuth2 supportent le concept de refresh token pour disposer d'un access token de courte durée accédant au userinfo endpoint, et d'une capacité à le refresh. C'est en particulier employé par les applications compatibles OAuth2 qui...OIDC et OAuth2 supportent le concept de refresh token pour disposer d'un access token de courte durée accédant au userinfo endpoint, et d'une capacité à le refresh. C'est en particulier employé par les applications compatibles OAuth2 qui ne considèrent pas l'id token, ou doivent requêter le profil régulièrement.
Exemple : kubelogin pour l'authentification Kubernetes insère un access token frais dans les requêtes, obtenu depuis un refresh token.1.0.0https://forge.tedomum.net/acides/hiboo/-/issues/121Documenter les principaux choix d'architecture2024-01-20T19:47:21Zkaiyoupierre@jaury.euDocumenter les principaux choix d'architectureCeux que j'ai en tête notamment :
- Emploi de blueprints Flask clairs
- Appui sur des forwards et forward backs pour les relations entre blueprints
- La partie SSO dans un blueprint à part pour ne pas trop mélanger avec les applications...Ceux que j'ai en tête notamment :
- Emploi de blueprints Flask clairs
- Appui sur des forwards et forward backs pour les relations entre blueprints
- La partie SSO dans un blueprint à part pour ne pas trop mélanger avec les applications
- Pourquoi des comptes et des profils distincts
- Pourquoi une fonction de claim
- Le cycle de vie des profils et comment ça pourrait interagir avec les applications0.2.0https://forge.tedomum.net/acides/hiboo/-/issues/120Documentation en Markdown buildée dans Hiboo2024-01-22T17:20:13Zkaiyoupierre@jaury.euDocumentation en Markdown buildée dans HibooIl serait idéal de pouvoir maintenir une documentation dans un format assez standard, type une arborescence de Markdown, mais de pouvoir l'embarquer directement dans Hiboo et la naviguer dans le thème classique.Il serait idéal de pouvoir maintenir une documentation dans un format assez standard, type une arborescence de Markdown, mais de pouvoir l'embarquer directement dans Hiboo et la naviguer dans le thème classique.0.2.0f00wlf00wlhttps://forge.tedomum.net/acides/hiboo/-/issues/119État des lieux et perspectives2024-01-21T12:05:41Zf00wlÉtat des lieux et perspectivesSalut,
Après réflexions, @ornanovitch et moi-même (@f00wl), on aimerait vous proposer un état des lieux du développement de Hiboo, et quelques perspectives d'avenir.
*Nous ne sommes pas les devs principaux, donc ce qu'on dit est à pren...Salut,
Après réflexions, @ornanovitch et moi-même (@f00wl), on aimerait vous proposer un état des lieux du développement de Hiboo, et quelques perspectives d'avenir.
*Nous ne sommes pas les devs principaux, donc ce qu'on dit est à prendre avec le recul nécessaire. @kaiyou reste le plus à même de juger de la codebase.*
Hiboo est un **super** projet:
- La [réflexion sur l'authentification](https://write.tedomum.net/tedomum/hiboo-re-inventons-la-roue-de-lauthentification) avec laquelle nous sommes toujours en accord.
- Des fonctionnalités assez introuvables ailleurs (plusieurs profiles, possibilité de claim, changement de type d'application, api pour masquer les emails etc.) qui ont été bien pensées dès le début pour les administrateurices et les utilisateurices.
- La qualité du code et sa factorisation, promesse d'une autonomie dans le développement.
- La simplicité et la légèreté de l'application qui contraste avec les usines à gaz comme keycloak ou gluu.
Tout ça nous a convaincu de l'adopter il y a trois ans comme solution SSO de notre petite infrastructure, et de participer à son développement.
Notre contribution au développement de Hiboo s'est fait en dents de scie (une scie bien édentée), mais on a quand même réussi à résoudre quelques bugs, dev quelques features (invitation, 2FA, groupes, templates flarum et nextcloud), passer à admin-lte v3 et à poetry, ainsi que pas mal d'améliorations et optimisation du front, et enfin à remettre en place une instance Weblate pour les traductions. Merci @kaiyou pour ton aide bienveillante sur tout ça.
Malgré ça, et malgré les maj apportées ponctuellement par @kaiyou :pray: et les contributions de toustes les autres contributeurices :pray:, Hiboo souffre d'un manque de développement de plus en plus criant :
- 19 [dépendances directes](https://bpa.st/NM3Q) sur 19 à mettre à jour :expressionless:
- dont 12 dépendances contiennent des breaking changes :sob:
- [27 vulnérabilités](https://bpa.st/V76A) trouvées dans 9 paquet (17 concernant la crypto) :scream:
- 35 issues ouvertes
- la dernière issue fermée remonte à 6 mois
- 2 issues ~"type / security" sans activité depuis 6 mois
- 6 issues en ~"priority / 1" sans activité depuis 5 mois
- 1 MR ouverte pour changement de licence sans activité depuis 1 an
Là s'impose un constat qu'il va bien falloir regarder en face : Hiboo n'est pas vraiment maintenu, et n'est clairement pas à la hauteur d'être utilisé comme « Security framework for small-sized hosting services ». Aussi petites soient nos infras, la sécurité de nos utilisateurices et de leurs données est compromise. Combien d'instances Hiboo sont actuellement en prod d'ailleurs ? On ne sait guère si d'autres que celles de la FELINN et de Tedomum existent.
Nous avons identifié quelques raisons qui nous font arriver à ce constat:
- manque de contributeurices (dev, test, traduction, etc.)
- manque de temps consacré à ce projet
- manque de compétences partagées entre les devs (par exemple on se repose beaucoup sur @kaiyou pour audit le code, car il semble à ce jour le plus compétant, notamment sur les questions de sécurité)
Nous pensons qu'il est temps faire un choix quant à l'avenir de Hiboo, en évitant de tomber dans le piège de l'[escalade d'engagement](https://fr.wikipedia.org/wiki/Escalade_d'engagement).
Voici en très gros ce que ça pourrait impliquer, c'est juste une idée, la suite serait à construire ensemble.
```mermaid
flowchart TD
A[Abandon de Hiboo]
A -->|oui| B{Alternatives}
B -->|migration ?| BA(keycloak)
B -->|migration ?| BB(authelia)
B -->|migration ?| BC(authentik)
BA --> BAA[PR les features manquantes]
BB --> BAA
BC --> BAA
A -->|non| C{dev soutenable}
C --> CA[communauté active]
C --> CB[devs engagé·es]
CA --> CAA[besoin de visibilité]
CA --> CAB[licence, coc, releases, etc]
CAA --> CAAA[mirroir github]
CAA --> CAAB[fediverse]
CAA --> CAAC[CHATONS]
CB --> CAA
CB --> CBA[payer un·e dev ?]
CBA --> CBAA[financement participatif]
CBA --> CBAB[demander une aide]
```
---
Nous espérons par ce message faire naître des discussions, qui nous permettront de savoir où nous en sommes et ce dont on est capable. Le but est de prendre une décision collective, alors n'hésitez pas à participer. Et quel que soit le choix qui sera fait, nous continuerons à nous entraider. On espère que ce message vous trouvera en forme !https://forge.tedomum.net/acides/hiboo/-/issues/118Mettre à jour les images docker2024-01-21T12:06:14Zf00wlMettre à jour les images docker- [ ] `python:3`
- [ ] `node:buster` :arrow_right: `node:bookwrm`
- [x] `python:3-slim-bulleseye` :arrow_right: `python:3-slim-bookworm`- [ ] `python:3`
- [ ] `node:buster` :arrow_right: `node:bookwrm`
- [x] `python:3-slim-bulleseye` :arrow_right: `python:3-slim-bookworm`0.1.1 (reboot)kaiyoupierre@jaury.eukaiyoupierre@jaury.euhttps://forge.tedomum.net/acides/hiboo/-/issues/117Brand-link vers la page courante2023-06-06T09:26:01Zf00wlBrand-link vers la page couranteActuellement le lien « Hiboo » en haut à gauche de l'interface renvoie vers `#`, i.e la page courante. Ce serait plus logique que ça revois vers la page d’accueil du compte `/account/home`.
![sreen](/uploads/e4d2ef9ddb152d990c3a79ace766...Actuellement le lien « Hiboo » en haut à gauche de l'interface renvoie vers `#`, i.e la page courante. Ce serait plus logique que ça revois vers la page d’accueil du compte `/account/home`.
![sreen](/uploads/e4d2ef9ddb152d990c3a79ace766e753/sreen.png)https://forge.tedomum.net/acides/hiboo/-/issues/116Possible vol d'identitée à la création de profil2024-01-29T14:48:01Zf00wlPossible vol d'identitée à la création de profilActuellement quand un·e utilisateurice créer un profil, rien de lui interdit de choisir le nom d'utilisateurice d'un autre compte que le sien à moins que le profil avec le même nom existe déjà.
Ce comportement part défaut peut être souh...Actuellement quand un·e utilisateurice créer un profil, rien de lui interdit de choisir le nom d'utilisateurice d'un autre compte que le sien à moins que le profil avec le même nom existe déjà.
Ce comportement part défaut peut être souhaitable mais peut aussi potentiellement conduire à une usurpation d'identité et à du « squat de username ».
![image](/uploads/730e8a04ba5fa9862e970d95543a234c/image.png)
Par exemple dans ce cas, si `f00wl` à l'habitude d'échanger avec `bar` sur plusieurs applications il sera tenté de lui partager des fichiers sur le service `Test` avec le nom `bar` qui en réalité appartient à `foo`.
Bien sûre on peut laisser les utilisateurices vérifier à qui iels s’adressent sur internet, c'est une bonne pratique mais je pense que ce serait quand même une bonne chose d'implémenter cette feature « secure by design ».
Pour ça il suffit:
- [ ] ajouter la liste des utilisateurices à la blocklist des noms de profils à la création d'un profile.
- [ ] Il faudrait éventuellement gérer le problème de #114+ en même temps0.1.1 (reboot)f00wlf00wlhttps://forge.tedomum.net/acides/hiboo/-/issues/115Blocklist pour les noms d'utilisateurices et de profile sensibles2024-01-29T14:47:58Zf00wlBlocklist pour les noms d'utilisateurices et de profile sensiblesPour éviter que des utilisateurices s'enregistrent ou enregistrent des profils avec des noms de qui peuvent prêter à confusion/erreurs de privilèges/phishing et autres. Les nom comme `root`, `admin`, etc ne devraient pas être autorisés à...Pour éviter que des utilisateurices s'enregistrent ou enregistrent des profils avec des noms de qui peuvent prêter à confusion/erreurs de privilèges/phishing et autres. Les nom comme `root`, `admin`, etc ne devraient pas être autorisés à la création (à l'exception des administrateurices).
- [ ] définir une blocklist
- [ ] ajouter une règle de non appartenance à la block liste à la création du `username`
- [ ] ajouter une règle de non appartenance à la block liste à la création/claim d'un `profile`
Pour la liste il ya deux options possible:
1. La configurer via une variable d'environnement avec une liste simple par défaut, ex: `USERNAME_BLOCK_LIST = ["root", "admin", "sudo", "www-data"]`
2. Utiliser une lib qui propose une liste déjà bien fournie, ex: [the-big-username-blacklist-python](https://github.com/marteinn/the-big-username-blacklist-python)0.1.1 (reboot)f00wlf00wl