Как сделать расширение совместимым с конкретными списками управления доступом для просмотра в магазине


В Magento Enterprise есть модуль Enterprise_AdminGws, который ограничивает права на редактирование определенными представлениями хранилища.

Как обычно это реализуется? т. Е. Если я создам расширение, которое реализует свою собственную модель данных с данными, хранящимися на уровне представления хранилища, означает ли это, что ограничения, налагаемые AdminGws, будут работать из коробки или необходимо зарегистрировать мои дополнительные модели ресурсов с расширением Enterprise_AdminGws.

И примером может быть расширение блога с записи в блоге и комментарии: Они имеют поле просмотра магазина и должны редактироваться только администратором просмотра магазина.

Редактировать (уточнение области действия): Ясно, что я должен определить свои собственные списки управления доступом в adminhtml.xml как обычно, сначала.

Author: Alex, 2013-06-26

2 answers

Хотя весь код предоставляется для вас, если вы используете встроенные структуры Magento (клиент, отдел продаж и т.д.), вы должны предоставить свои собственные средства проверки обратного вызова для разрешений, специфичных для вашего приложения.

Например, этот наблюдатель:

<model_save_before>
    <observers>
        <enterprise_admingws>
            <class>enterprise_admingws/observer</class>
            <method>validateModelSaveBefore</method>
        </enterprise_admingws>
    </observers>
</model_save_before>

Позволяет методу Enterprise_AdminGws_Model_Observer::validateModelSaveBefore сопоставляться с пользовательским методом обратного вызова, производным от имени класса. Этот метод определен в Models.php, в котором есть некоторый код начальной загрузки, позволяющий определить, существуют ли привилегии сохранения для особая роль.

Обратный вызов либо throw, либо вернет значение void. Его цель состоит только в проверке. Добавьте свои собственные обратные вызовы, расширив Enterprise_AdminGws_Model_Models.

 4
Author: philwinkle, 2013-06-26 14:42:52

Я считаю, что вы также должны объявить acl в файле adminhtml.config (поскольку он указан в названии). Что-то вроде

<config>
    <acl>
        <resources>
            <admin>
                <children>
                    <system>
                        <children>
                            <config>
                                <children>
                                    <moduleName>
                                        <title>moduleName Section</title>
                                    </moduleName>
                                </children>
                            </config>
                        </children>
                    </system>
                    <report>
                        <children>
                            <salesroot>
                                <children>
                                    <moduleName_settlement_reports translate="title">
                                        <title>Settlement Reports</title>
                                        <children>
                                            <view translate="title">
                                                <title>View</title>
                                            </view>
                                            <fetch translate="title">
                                                <title>Fetch</title>
                                            </fetch>
                                        </children>
                                    </moduleName_settlement_reports>
                                </children>
                            </salesroot>
                        </children>
                    </report>
                </children>
            </admin>
        </resources>
    </acl>
</config>

- это то, что я использую, и, похоже, оно работает просто отлично.

 0
Author: Quantum, 2013-06-26 15:02:10