DEV Community

Lucas Teixeira dos Santos Santana
Lucas Teixeira dos Santos Santana

Posted on

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

Top comments (0)