Permissions granulaires basées sur les groupes pour les utilisateurs anonymes et connectés

Il existe dans notre base de code un pseudo-groupe historiquement confus appelé @everyone, qui peut être utilisé pour :

  • Les paramètres du site de type group_list
  • Les permissions des catégories
  • Les groupes d’étiquettes

Dans certains cas, certaines personnes interprètent @everyone comme signifiant « tous les utilisateurs anonymes et tous les utilisateurs connectés », tandis que d’autres l’interprètent comme signifiant uniquement « tous les utilisateurs connectés ». En réalité, pour les paramètres du site, cela signifie généralement « tous les utilisateurs connectés ».

La situation est encore plus confuse du fait que ce groupe @everyone peut être utilisé dans des paramètres du site où il n’a aucun sens que « tous les utilisateurs anonymes et connectés » aient accès à la fonctionnalité, comme pm_tags_allowed_for_groups.

Cela crée également de la confusion du point de vue des indicateurs de fonctionnalités et de l’expérience des développeurs, car pour certaines modifications à venir ou d’autres paramètres, nous pourrions réellement vouloir les activer pour « tous les utilisateurs anonymes et connectés ».

Solution

Nous introduisons deux nouveaux pseudo-groupes automatiques distincts :

  • anonymous (ID 4) - Représente les utilisateurs anonymes visitant votre site sans compte
  • logged_in_users (ID 5) - Représente tous les utilisateurs connectés à votre site, avec un effet similaire au groupe automatique trust_level_0, mais plus spécifique

Ces groupes ont déjà été introduits, mais ne prendront effet que lorsque la modification à venir granular_anonymous_and_logged_in_groups_permissions sera activée sur votre site.

Lorsque cette modification à venir sera activée, tout paramètre ayant everyone comme groupe sélectionné sera automatiquement traduit vers l’ID logged_in_users. Ainsi, aucune donnée dans la table des paramètres du site ne sera modifiée lors de l’activation de cette modification à venir. Lorsque cette modification deviendra permanente, nous effectuerons une migration des données pour tous les paramètres de groupe afin d’appliquer ce changement.

De plus, nous avons marqué anonymous comme disallowed_group pour plusieurs paramètres du site où cela n’a pas de sens, par exemple personal_message_enabled_groups.

Qu’en est-il des permissions des étiquettes et des catégories ?

Ces permissions resteront inchangées, car leur notion de « everyone » diffère à plusieurs égards et ne dépend pas du groupe automatique sous-jacent.

3 « J'aime »

Attends… quoi :flushed_face: Cela signifie-t-il que toutes les catégories actuellement publiques (tout le monde) passeront à des catégories fermées nécessitant une connexion, une fois cette option activée ?

Non, car :

Cela affecte uniquement les paramètres du site de type liste de groupes qui permettent actuellement de sélectionner « tout le monde » comme suit :

1 « J'aime »