Como criar uma Lista de Controle de Acesso (ACL) personalizada no Magento 2
Lucas Teixeira dos Santos Santana
Posted on November 22, 2021
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>
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
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
Posted on November 22, 2021
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.