Bonjour à tous,
voila voila j'ai un petit problème, je souhaite proposer des applications de publication pour mes membres et pourvoir les modérés en ligne sans passer par l'administration; Je m'explique c'est très simple en faite c'est un système de micro blogging pour chacun des membres qui doit être modéré par des membres d'un rang supérieur.
J'ai tester le système d'ACL proposé par Cake et je le trouve absolument pas pratique pour mon utilisation, un gout de to much, alors je me suis penché vers un système plus simple avec une table 'allows' pour stocker les droits des utilisateurs vous me direz j'aurais pu les mettre dans 'users' aussi ça reviens au mêmes, ce système me permet d'affiché les boutons de modérations au cas par cas et sécurisé mon controller facilement. mon problème est que je doit créer mes autorisation une par une pour chacun des membres l'utilisation des groupes de l'acl est bien plus pratique, mais je souhaiterais attribué un groupe par application soit le microblogging en est une mais je voudrais proposé d'autre service par la suite et les modéré de la mêmes façon et donc pouvoir attribué plusieurs groupe à un membre dans le cas ou le membre serais modérateur du microBlog et du forum par exemple...
Donc si quelqu'un passe par la et peu m'orienté vers une solution ça serait supper.

3 réponses


La méthode "à l'ancienne" peut fonctionner, mais ça demande quand même de surcoucher pas mal de choses, puisqu'on ne peut pas utiliser de prexif, ni d'avoir un réel contrôle là dessus.

L'idée c'est de faire un enum pour les autorisations :

  • 0 : super administrateur
  • 1 : administrateur
  • 2 : modérateur
  • 3 : membre premium
  • 4 : membre classique
  • 5 : nouveau membre
  • 6 : esclave
    etc... A adapter selon tes besoins.

L'idée, c'est que le 0, c'est Dieu, y a rien au dessus. Et plus le chiffre augmente, plus les permissions sont réduites.

Dans ton cas, pour l'avoir mis en place il y a quelques années sur un projet à la logique similaire, le principe revient à dire :

  • tout le monde peut poster
  • un post est passé à sa création en statut created, sauf si l'utilisateur est super-administrateur
  • pour qu'un post soit passé en accepted, il faut qu'un utilisateur d'un niveau hiérarchique supérieur (donc < à celui de l'auteur) le valide
  • tu n'affiches que les posts accepted

Et le tour est joué.

Mais contrairement aux ACL, c'est pas hyper maintenable puisque tout est codé en dur, c'est pas accessible dans l'admin, et c'est pas réglage controller par controller, fonction par fonction. Mais ça peut faire l'affaire.

Hello Pakito et merci pour ta réponse, l'idée n'est pas très adaptable dans ma situation mais je note ça me resservira surement dans un autre cas. Après mûre réflexion j'ai pensé gardé le système de prefix et reprendre le système que j'avais à la base sur la version Joomla de mon site soit 2 tables, une avec les noms des groupes et l'autre avec avec liaison entre 'users' et 'groups' me permettant d’attribué plusieurs groupes justement à un membre.
Deuxième solution rajouter un champs à user pour chacun des droits par exemple 'microblogaccess' et un enum: 1 = droit normaux, 2 modérateur et 0 = bannis pour interdire l'accès au membre abusif. L'avantage du 2ème système c'est de ne pas avoir a faire appel à la DB à chaque fois comme avec les ACL mais de vérifier les droits sur la session avec par exemple une fonction dans le controller allowTo(use|moderate|admin) qui me permetra d'afficher ou nom les bouton de modération et un second contrôle dans les méthodes du controller.

Autre question dans la foulé: peut on restreindre les ACL de cake à un préfix (admin) pour bénéficier de ses avantages en admin sans ses contrainte en front?