Como criar uma Lista de Controle de Acesso (ACL) personalizada no Magento 2

santanaluc94

Lucas Teixeira dos Santos Santana

Posted on November 22, 2021

Como criar uma Lista de Controle de Acesso (ACL) personalizada no Magento 2

Contextualizando

O que é uma lista de controle de acesso?

O Access Control List (Controle de Lista de Acessos) ou ACL são regras que permitem um administrador limitar as permissões de um usuário para autenticação, permitindo o dono da loja refinar as funções para cada papel de usuário.

Papeis de usuário

As listas de recursos do ACL estão na área do administrador do Magento e são visíveis assim que acessar o caminho System -> Permissions -> User Roles. Neste recurso é possível visualizar uma lista em forma de árvore de todos os recursos disponíveis, onde os recursos filhos ficam dentro dos recursos pais.
É possível criar papeis de usuários e selecionar os recursos que cada papel poderá ter acesso, cada usuário ficará limitado aos recursos selecionados do seu papel.


Código para criar o ACL

acl.xml

Para a criação de novos papéis de usuário no Magento é necessário criar um arquivo chamado acl.xml que deve seguir a estrutura de pasta \{Vendor}\{Module}\etc\acl.xml. Todo recurso deve iniciar tendo o recurso Magento_Backend::admin como raiz, caso não seja filho de outro recurso.

Atributo Descrição
id Define o identificador único que é utilizado na guia.
title Texto que será exibido na barra de menu.
sortOrder Define a ordem de classificação dos recursos. A ordem é determinada por números crescente, então números menores aparecerão primeiro.
<?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="{Vendor}_{Module}::{parentResourceId}" title="{Parent Title}" sortOrder="{integer}">
                    <resource id="{Vendor}_{Module}::{featureResourceId}" title="{Feature Title}" sortOrder="{integer}">
                        <resource id="{Vendor}_{Module}::{firstChildResourceId}" title="{First Child Title}" sortOrder="{integer}" />
                        <resource id="{Vendor}_{Module}::{secondChildResourceId}" title="{Second Child Title}" sortOrder="{integer}">
                            <resource id="{Vendor}_{Module}::{firstGrandchildResourceId}" title="{First Grandchild Title}" sortOrder="{integer}" />
                        </resource>
                    </resource>
                </resource>
            </resource>
        </resources>
    </acl>
</config>
Enter fullscreen mode Exit fullscreen mode

Finalizando

Valores entre chaves ({test}) devem ser alterados na implementação do código.

Habilitando as alterações

Execute o comando PHP para limpar todos os caches de armazenamento em cache do processos.

php bin/magento cache:clean
php bin/magento flush
Enter fullscreen mode Exit fullscreen mode

Diretórios e Arquivos

Segue a a lista de diretórios e arquivos que devem ser criados.

- app/
  - code/
    - {Vendor}/
        - {Module}/
          - etc/
            - acl.xml
            - module.xml
          - registration.php
          - composer.json

Enter fullscreen mode Exit fullscreen mode
💖 💪 🙅 🚩
santanaluc94
Lucas Teixeira dos Santos Santana

Posted on November 22, 2021

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related