Gestion des droits d'admin

Les droits sont gérés via le fichier etc/acl.xml. Le fichier sert à déclarer les droits possibles, qui s'affichent ensuite dans le back-office dans System > Permissions.

Exemple généré par Mage2gen :

<?xml version="1.0" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Acl/etc/acl.xsd">
    <acl>
        <resources>
            <resource id="Magento_Backend::admin">
                <resource id="Adexos_Formation::request" sortOrder="10" title="request">
                    <resource id="Adexos_Formation::request_save" sortOrder="10" title="Save request"/>
                    <resource id="Adexos_Formation::request_delete" sortOrder="20" title="Delete request"/>
                    <resource id="Adexos_Formation::request_update" sortOrder="30" title="Update request"/>
                    <resource id="Adexos_Formation::request_view" sortOrder="40" title="View request"/>
                </resource>
            </resource>
        </resources>
    </acl>
</config>

Pour gérer les droits dans la configuration, exemple du module Magento_Catalog :

<resource id="Magento_Backend::stores">
    <resource id="Magento_Backend::stores_settings">
        <resource id="Magento_Config::config">
            <resource id="Magento_Catalog::config_catalog" title="Catalog Section" translate="title" />
        </resource>
    </resource>
</resource>

Il est possible de tester si l'admin en cours a un certain droit via la fonction

/**
 * @var \Magento\Framework\AuthorizationInterface
 */
private $authorization;

return $this->authorization->isAllowed('<resource demandée>');