Comment ajouter acl dans un module personnalisé dans magento

8

J'ai créé un module personnalisé dans magento. J'ai créé ce menu sous le menu client. J'ai besoin d'ajouter acl pour le module personnalisé. J'ai besoin de savoir comment créer acl dans un module personnalisé im donnant ici mon config.xml ...

my config.xml
------------------
<?xml version="1.0" encoding="UTF-8" ?>
<config>
    <!-- module configuration -->
    <modules>
        <Webcreon_Seller>
            <version>1.0.0</version>
        </Webcreon_Seller>
    </modules>
    <!-- module configuration end -->
    <frontend>
        <routers>
            <seller>
                <use>standard</use>
                <args>
                    <module>Webcreon_Seller</module>
                    <frontName>seller</frontName>  
                </args>
            </seller>
        </routers>
     <layout>
            <updates>
                <seller>
                      <file>sellerform.xml</file>
                </seller>
            </updates>
       </layout>
    </frontend>
    <admin>
     <routers>
         <seller>
            <use>admin</use>
            <args>
               <module>Webcreon_Seller</module>
               <frontName>adminseller</frontName>
            </args>
         </seller>
      </routers>
 </admin>
 <adminhtml>
   <layout>
      <updates>
          <seller>
              <file>sellerform.xml</file>
           </seller>
      </updates>
   </layout>
   <menu>
      <customer translate="title" module="adminhtml">

         <sort_order>100</sort_order>
         <children>
             <set_time>
                   <title>Seller List</title>
                   <action>adminseller/adminhtml_index</action>
              </set_time>
          </children>
       </customer>
    </menu>
</adminhtml> 

    <global>
        <blocks>
            <seller>
                <class>Webcreon_Seller_Block</class>
            </seller>
         </blocks>
         <helpers>
            <seller>
                <class>Webcreon_Seller_Helper</class>
            </seller> 
        </helpers>
              <models>
          <seller>
                <class>Webcreon_Seller_Model</class>
                 <resourceModel>seller_mysql4</resourceModel>
            </seller> 
            <seller_mysql4>
             <class>Webcreon_Seller_Model_Mysql4</class>
             <entities>
                 <seller>
                   <table>db_vendor</table>
                 </seller>
              </entities>
          </seller_mysql4>
        </models>
        <resources>
        <!-- connection to write -->
        <seller_write>
            <connection>
                <use>core_write</use>
            </connection>
        </seller_write>
        <!-- connection to read -->
       <seller_read>
          <connection>
             <use>core_read</use>
          </connection>
       </seller_read>
       <webcreon_seller_setup>
            <setup>
                <module>Webcreon_Seller</module>
            </setup>
        </webcreon_seller_setup>
</resources>
<rewrite>
    <sellercreate>
         <from><![CDATA[#^/seller[\/]?$#]]></from>
         <to><![CDATA[/seller/seller/sellercreate/$1]]></to>
         <complete>1</complete>
      </sellercreate>
</rewrite>
</global>


</config>
Deepak Kumar
la source

Réponses:

3

Créer adminhtml.xmlà Webcreon/Seller/etcoù vous avez besoin de mettre votre code

<?xml version="1.0" encoding="UTF-8" ?>
    <config>
        <acl>
          <resources>
            <all>
              <title>Allow Everything</title>
            </all>
            <admin>
             <children>
                <customer translate="title" module="seller">
                  <children>
                    <set_time translate="title">
                    <title>Seller List</title>
                    </set_time>
                  </children>
                </customer>
              </children>
            </admin>
          </resources>
        </acl>
    </config>

Accorant à vous avez créé new menu at customer sectionun child tabet son nom est set_time Donc je suis ajouter ce code

    <customer translate="title" module="seller">
      <children>
        <set_time translate="title">
        <title>Seller List</title>
        </set_time>
      </children>
    </customer>
Amit Bera
la source
j'ai besoin de montrer mon module dans le groupe acl client .. signifie mon autorisation dans la section client
Deepak Kumar
Oui. c'est sous chez le client
Amit Bera
ce n'est pas affiché dans la section clients ... aussi il ne s'affiche pas dans le groupe acl
Deepak Kumar
J'ai créé adminhtml dans etc ... mais et tout votre code y est collé dans le fichier ... j'ai supprimé le cache ... puis me reconnecter dans admin ... mais dans la permission de l'utilisateur, il ne s'affiche pas là
Deepak Kumar
Assurez-vous de cliquer sur «Vider le stockage du cache» dans la page de gestion du cache. "Flush Magento Cache" ne le met pas à jour.
Emery King
10

Une explication générale:

ACL pour le menu admin

Pour définir l'ACL pour une coutume menu admin entrée, copiez tout ci - dessous adminhtml/menupour acl/resources/admin/childrenet supprimer les <action>nœuds.

Exemple: que copier

http://i.stack.imgur.com/9CiIQ.png

Pour utiliser réellement l'ACL, vous devez ajouter la méthode suivante à votre contrôleur :

protected function _isAllowed()
{
    return Mage::getSingleton('admin/session')->isAllowed('ENTER RESOURCE IDENTIFIER HERE');
}

L'identifiant de ressource est basé sur les noms de nœuds ci acl/resources/admin/children- dessous , en ignorant les childrennœuds suivants .

Exemple: identificateurs de ressources

http://i.stack.imgur.com/HZ2Is.png

ACL pour la section de configuration du système

Pour définir l'ACL pour une section de configuration du système , les éléments suivants doivent être ajoutés ci acl/resources/admin/children- dessous :

<system>
  <children>
    <config>
      <children>
        <my_configuration_section>
          <title>My Configuration Section</title>
        </my_configuration_section>
      </children>
    </config>
  </children>
</system>

d'où my_configuration_sectionvient system.xml:

<sections>
    <my_configuration_section translate="label" module="my_module">
      ...
    </my_configuration_section>
</sections>     

Spécifique à votre question:

Dans votre cas, cela signifie que cela adminhtml.xmldevrait ressembler à ceci:

<?xml version="1.0" encoding="UTF-8" ?>
<config>
    <acl>
      <resources>
        <admin>
         <children>

           <customer translate="title" module="adminhtml">
             <sort_order>100</sort_order>
             <children>
               <set_time>
                 <title>Seller List</title>
               </set_time>
             </children>
           </customer>

          </children>
        </admin>
      </resources>
    </acl>
</config>
Fabian Schmengler
la source