Bonjour à tous.
J’ai besoin d’avoir une gestion des ACL différente pour plusieurs vues d’un composant et je ne trouve pas vraiment de documentation sur ce sujet.
J’ai d’abord crée une section ‘mavue1’ dans le acces.xml avec les actions ‘classiques’ core.edit, core.create, etc…
J’ai donc aussi crée un nouvel onglet dans le config.xml :
Mais à la validation des paramètres, quand on autorise une action, il se passe un truc bizarre !
Après validation de l’autorisation dans la section ‘mavue1’ : l’autorisation est affectée au niveau du composant, et se transforme en ‘hérité’ au niveau de la section 'mavue1' ??
Histoire de contourner ce problème, j’ai essayé en créant des actions spécifiques à la vue mavue1.edit, mavue1.create, etc…
Ce qui ne m'arrange pas vraiment car je ne bénéficie pas des héritages globaux.
Là, je me heure à une autre problème.
La méthode edit de la classe JControllerForm vérifie les droits core.edit du composant et il est impossible de paramétrer ce contrôle à priori.
Je suis donc obligé de surcharger la classe et la méthode edit et certainement les autres aussi, ce qui me parait assez aberrent et fait perdre partiellement l’intérêt d’utiliser les classes JForm.
Si quelqu’un a une idée sur ces 2 points je suis preneur.
Merci d’avance.
J’ai besoin d’avoir une gestion des ACL différente pour plusieurs vues d’un composant et je ne trouve pas vraiment de documentation sur ce sujet.
J’ai d’abord crée une section ‘mavue1’ dans le acces.xml avec les actions ‘classiques’ core.edit, core.create, etc…
Code:
<access component="com_moncomposant"> <section name="component"> <action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" /> <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" /> <action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_COMPONENT_DESC" /> <action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_COMPONENT_DESC" /> <action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_COMPONENT_DESC" /> <action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_COMPONENT_DESC" /> <action name="core.edit.own" title="JACTION_EDITOWN" description="JACTION_EDITOWN_COMPONENT_DESC" /> </section> <section name="mavue1"> <action name="core.create" title="JACTION_CREATE" description="COM_MONCOMPOSANT_MAVUE1_ACCESS_CREATE_DESC" /> <action name="core.delete" title="JACTION_DELETE" description="COM_MONCOMPOSANT_MAVUE1_ACCESS_DELETE_DESC" /> <action name="core.edit" title="JACTION_EDIT" description="COM_MONCOMPOSANT_MAVUE1_ACCESS_EDIT_DESC" /> <action name="core.edit.state" title="JACTION_EDITSTATE" description="COM_MONCOMPOSANT_MAVUE1_ACCESS_EDITSTATE_DESC" /> <action name="core.edit.own" title="JACTION_EDITOWN" description="COM_MONCOMPOSANT_MAVUE1_ACCESS_EDITOWN_DESC" /> </section>
J’ai donc aussi crée un nouvel onglet dans le config.xml :
Code:
<fieldset name="permissions" label="JCONFIG_PERMISSIONS_LABEL" description="JCONFIG_PERMISSIONS_DESC"> <field name="rules" type="rules" label="JCONFIG_PERMISSIONS_LABEL" class="inputbox" validate="rules" filter="rules" component="com_moncomposant" section="component" /> </fieldset> <fieldset name="permissions_mavue1" label="COM_MONCOMPOSANT_MAVUE1_CONFIG_PERMISSIONS_LABEL" description="COM_MONCOMPOSANT_MAVUE1_CONFIG_PERMISSIONS_DESC"> <field name="rules" type="rules" label="COM_MONCOMPOSANT_MAVUE1_CONFIG_PERMISSIONS_LABEL" class="inputbox" validate="rules" filter="rules" component="com_moncomposant" section="mavue1" /> </fieldset>
Après validation de l’autorisation dans la section ‘mavue1’ : l’autorisation est affectée au niveau du composant, et se transforme en ‘hérité’ au niveau de la section 'mavue1' ??
Histoire de contourner ce problème, j’ai essayé en créant des actions spécifiques à la vue mavue1.edit, mavue1.create, etc…
Ce qui ne m'arrange pas vraiment car je ne bénéficie pas des héritages globaux.
Code:
<access component="com_moncomposant"> <section name="component"> <action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" /> <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" /> <action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_COMPONENT_DESC" /> <action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_COMPONENT_DESC" /> <action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_COMPONENT_DESC" /> <action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_COMPONENT_DESC" /> <action name="core.edit.own" title="JACTION_EDITOWN" description="JACTION_EDITOWN_COMPONENT_DESC" /> </section> <section name="mavue1"> <action name="mavue1.create" title="JACTION_CREATE" description="COM_MONCOMPOSANT_MAVUE1_ACCESS_CREATE_DESC" /> <action name="mavue1.delete" title="JACTION_DELETE" description="COM_MONCOMPOSANT_MAVUE1_ACCESS_DELETE_DESC" /> <action name="mavue1.edit" title="JACTION_EDIT" description="COM_MONCOMPOSANT_MAVUE1_ACCESS_EDIT_DESC" /> <action name="mavue1.edit.state" title="JACTION_EDITSTATE" description="COM_MONCOMPOSANT_MAVUE1_ACCESS_EDITSTATE_DESC" /> <action name="mavue1.edit.own" title="JACTION_EDITOWN" description="COM_MONCOMPOSANT_MAVUE1_ACCESS_EDITOWN_DESC" /> </section>
La méthode edit de la classe JControllerForm vérifie les droits core.edit du composant et il est impossible de paramétrer ce contrôle à priori.
Je suis donc obligé de surcharger la classe et la méthode edit et certainement les autres aussi, ce qui me parait assez aberrent et fait perdre partiellement l’intérêt d’utiliser les classes JForm.
Si quelqu’un a une idée sur ces 2 points je suis preneur.
Merci d’avance.
Commentaire