Bonjour tout le monde,
je développe actuellement une application dans laquelle il faut être loggé pour faire quoi que ce soit, mis à part la page d'accueil.
ma question est de savoir de quelle manière envisager la partie administration de mon application.
Je m'explique :
Il me semble plus intéressant d'utiliser différents roles pour les utilisateurs (genre de niveau d'accréditation ^^) pour faire la différence entre un utilisateur de base et un modérateur par exemple plutot que les ACL (bien plus lourd apparement). Cependant un modérateur est juste un utilisateur avec des droits de modification sur les entrées des autres utilisateurs, rien de plus.
De mon point de vue un admin est bien différent, pour moi ce n'est pas un utilisateur (il ne peut ajouter de contenu par exemple), ce n'est pas un compte pour utiliser le site mais juste pour l'administrer : modifier les paramètres de l'application, bannir des utilisateurs, etc...
Donc intellectuellement j'ai problème à ce qu'un utilisateur ayant un role très élevé (par exemple moi), puisse à la fois être utilisateur (sur la partie publique) et admin sur la partie admin. (ce que propose CakePHP en standard avec le prefix 'admin' et les actions 'admin_blablabla' dans les controllers)
De plus le développement de la partie publique et de la partie admin n'avance pas à la même vitesse, donc le fait de mélanger les fonctions 'index', 'add', 'edit' et 'admin_index', 'admin_delete' dans un même controller le chagrine un peu.
L'idéal, de mon point de vue mais j'attends le votre, serait d'avoir une autre app dédiée à l'admin, avec son login (avec une table séparée dans la bdd et ses quelques membres n'ayant rien à voir avec les utilisateurs du site), ses actions dans les controllers, etc. Sauf que ca fait un peu doublon de réécrire la connexion à la bdd, les relations entre les models, etc...
J'ai parcouru les différents forums sur cakephp et pas mal préconise de développer la partie admin comme un plugin, ce qui correspond à une situation intermédiaire, c'est presque une app séparée mais qui partage quelques éléments.
Cela permet d'uploader la partie admin simplement car elle est mise à part, de cloisonner deux zones qui, pour moi, ne doivent pas être liée à un même compte, etc : Qu'en pensez vous ?
Je n'ai jamais touché à la création de plugins, donc j'anticipe un peu avec une deuxième question
Dans le plugin faudra t'il recréer les associations de models par exemple entre 'profile' et 'language' comme dans l'app de base, ou peut on depuis le plugin utiliser toutes les associations déja existante dans l'application de base.
Merci d'avance.
Donc intellectuellement j'ai problème à ce qu'un utilisateur ayant un role très élevé (par exemple moi), puisse à la fois être utilisateur (sur la partie publique) et admin sur la partie admin. (ce que propose CakePHP en standard avec le prefix 'admin' et les actions 'admin_blablabla' dans les controllers)
Est ce qu'un admin va utiliser ton application ? Si oui, c'est peut être mieux de le laisser comme étant un "super utilisateur", cela lui évitera d'avoir deux comptes. Sinon, il faut en effet bien dissocier.
J'ai parcouru les différents forums sur cakephp et pas mal préconise de développer la partie admin comme un plugin, ce qui correspond à une situation intermédiaire, c'est presque une app séparée mais qui partage quelques éléments.
Je partirai plutôt sur l'idée de plugin en effet. Je préconise même de tout coder en plugin ça sera plus intéressant sur le long terme (mais c'est une autre histoire).
Un plugin est une sortie d'application CakePHP dans ton application CakePHP. C'est vraiment simple à faire et la doc est bien faite la dessus.
Voici un exemple d'application avec plugins : https://github.com/Okimi/okimi-webapp/tree/users/Plugin, il n'y a rien dans app comme tu pourras le voir.
Cet exemple est un peu différent car je découpe par fonctionnalités et non par rôle mais le principe est très similaire. Je me suis basé sur https://github.com/croogo/croogo pour réaliser ça.
Bonjour.
Dans le plugin faudra t'il recréer les associations de models par exemple entre 'profile' et 'language' comme dans l'app de base, ou peut on depuis le plugin utiliser toutes les associations déja existante dans l'application de base.
Ta question n'est pas très claire, mais tu peux effectivement utiliser les associations entre des plugins et la partie "native" de l'application.
Bien que les plugins structurellement sont séparés dans l'applications de la structure de base, ils sont tous reliés entre eux dans la mesure où tu les charges depuis le/les fichier(s) bootstrap.
Si tu veux en apprendre plus sur les plugins en dehors de la documentation de CakePHP, tu peux visionner les tutoriels vidéos de Grafikart sur les plugins qu'il a déjà partagé.
@prbaron : dans la pratique un utilisateur (qui est aussi admin, comme moi) utilise aussi l'app. Mais je ne veux pas mélanger mes activités de user (90% du temps) avec mes activités d'administration.
@Lartak11 : la question était en fait de pouvoir extraire toutes les fonctions admin_blablabla des controllers de l'app pour les mettre dans le plugin et sans pour autant avoir à refaire les fichiers models dans le plugin.
Je vais regarder précisément la création de plugin, et je reviens par ici ensuite.