Bonsoir,
Je réfléchi à une manière de concevoir des rôles utilisateurs pour un site web. Ma question comporte trois points :
1/ J'ai opté pour une colonne integer dans le compte utilisateur, avec un chiffre de 1 à 9 pour cibler les rôles, chiffre dont la valeur serait classée dans un ordre hiérarchique. Par exemple : "1" pour un administrateur, "9" pour un simple utilisateur inscrit au site. Plus tard, dans l'application, lorsque je testerai les rôles, je me disais que je pourrais juste faire un test du genre :
Plutôt que d'utiliser ceci :
Ou cela :
Déjà, avant d'aller plus avant, que pensez-vous de cette solution ?
2/ Maintenant, voici les rôles prévus, si vous avez des remarques à faire à ce sujet (manque un rôle, ou autre) je suis preneur là aussi :
3/ Notez que j'imagine aussi ajouter une vérification de groupes. Par exemple, avec cela on pourrait être modérateur que pour une partie du site. Et j'imaginais notamment placer les bannis dans un groupe (alors que dans un premier temps j'avais fais une colonne booléenne "is_banned" dans le compte utilisateur). Là encore que pensez-vous de ce choix ?
Modifié par Olivier C (29 Feb 2024 - 15:50)
Je réfléchi à une manière de concevoir des rôles utilisateurs pour un site web. Ma question comporte trois points :
1/ J'ai opté pour une colonne integer dans le compte utilisateur, avec un chiffre de 1 à 9 pour cibler les rôles, chiffre dont la valeur serait classée dans un ordre hiérarchique. Par exemple : "1" pour un administrateur, "9" pour un simple utilisateur inscrit au site. Plus tard, dans l'application, lorsque je testerai les rôles, je me disais que je pourrais juste faire un test du genre :
if (role < 3) {}
Plutôt que d'utiliser ceci :
if (role === 'administrator' || role === 'moderator') {}
Ou cela :
if (['administrator', 'moderator'].includes(role)) {}
Déjà, avant d'aller plus avant, que pensez-vous de cette solution ?
2/ Maintenant, voici les rôles prévus, si vous avez des remarques à faire à ce sujet (manque un rôle, ou autre) je suis preneur là aussi :
INSERT INTO __role (_id, _name, _description)
VALUES
(1, 'administrator', 'Les administrateurs ont un accès complet au site. Ils peuvent effectuer toutes les tâches de gestion, y compris la modification des paramètres du site, l''ajout et la suppression de contenu, la gestion des utilisateurs.'),
(2, 'moderator', 'Les modérateurs ont le pouvoir de publier, modifier et supprimer tout le contenu sur le site. Ils ne peuvent pas accéder aux paramètres du site ni effectuer des actions administratives.'),
(4, 'author', 'Les auteurs peuvent publier et gérer leur propre contenu. Ils ne peuvent pas modifier ou supprimer le contenu des autres utilisateurs.'),
(5, 'contributor', 'Les contributeurs peuvent soumettre leur contenu pour examen, mais ils ne peuvent pas le publier eux-mêmes. Les modérateurs ou les administrateurs doivent approuver leur contenu pour qu''il soit publié.'),
(8, 'commentator', 'Les commentateurs peuvent publier des commentaires sous un contenu déjà créé.'),
(9, 'subscriber', 'Les utilisateurs inscrits peuvent lire certains contenus non accessibles sans connexion au site.');
3/ Notez que j'imagine aussi ajouter une vérification de groupes. Par exemple, avec cela on pourrait être modérateur que pour une partie du site. Et j'imaginais notamment placer les bannis dans un groupe (alors que dans un premier temps j'avais fais une colonne booléenne "is_banned" dans le compte utilisateur). Là encore que pensez-vous de ce choix ?
Modifié par Olivier C (29 Feb 2024 - 15:50)