CoderFunda
  • Home
  • About us
    • Contact Us
    • Disclaimer
    • Privacy Policy
    • About us
  • Home
  • Php
  • HTML
  • CSS
  • JavaScript
    • JavaScript
    • Jquery
    • JqueryUI
    • Stock
  • SQL
  • Vue.Js
  • Python
  • Wordpress
  • C++
    • C++
    • C
  • Laravel
    • Laravel
      • Overview
      • Namespaces
      • Middleware
      • Routing
      • Configuration
      • Application Structure
      • Installation
    • Overview
  • DBMS
    • DBMS
      • PL/SQL
      • SQLite
      • MongoDB
      • Cassandra
      • MySQL
      • Oracle
      • CouchDB
      • Neo4j
      • DB2
      • Quiz
    • Overview
  • Entertainment
    • TV Series Update
    • Movie Review
    • Movie Review
  • More
    • Vue. Js
    • Php Question
    • Php Interview Question
    • Laravel Interview Question
    • SQL Interview Question
    • IAS Interview Question
    • PCS Interview Question
    • Technology
    • Other

23 February, 2022

Magento 2 Admin ACL Access Control Lists

 Programing Coderfunda     February 23, 2022     Magento 2, MAGENTO TUTORIALS     No comments   

 

Magento 2 Admin ACL Access Control Lists

Magento 2 admin acl use an authentication system and a robust system for create Access Control List Rules (ACL) which allows a store owner to create fine grained roles for each and every user in their system.

Magento 2 Admin ACL panel use an authentication system and a robust system for create Access Control List Rules (ACL) which allows a store owner to create fine grained roles for each and every user in their system. In this article, we will find how it work and how to add ACL for our custom module.

Magento 2 Access Control List Rules

The Magento 2 Admin ACL resources are visible under the Magento 2 admin System > Permissions > User Roles area. When we click on the Add New Role button or access to a role, you will see the page look like:

magento 2 admin acl

In this resources tab, you can see a tree-list of all the available resources in your system. You can choose all Resource or some of them for this role and select the user for this role in Role Users tab. All of the user who belong to this role will be limit access to the resource which you choose. They cannot see and access to other one.

To Create Admin Admin ACL

  • Step 1: Create ACL rule
  • Step 2: Flush Magento cache
  • Step 3: Check ACL rule

Step 1: Create ACL rule

Now, we will see how to add our module to ACL role. We will use a previous simple module HelloWorld to do this. As in the Admin Menu and System Configuration article, you saw that we alway have a resource attribute when create it. Now we will register that resources to the system, so Magento can realize and let us set a role for them. To register the resource, we use the acl.xml file which located in app/code/{namespace}/{module}/etc/acl.xml. Let’s create this file for our simple Module:

File: app/code/Mageplaza/HelloWorld/etc/acl.xml

Contents would be:

<?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="Mageplaza_HelloWorld::helloworld" title="Hello World" sortOrder="51">
                    <resource id="Mageplaza_HelloWorld::post" title="Posts" sortOrder="10"/>
                    <resource id="Mageplaza_HelloWorld::helloworld_configuration" title="Configuration" sortOrder="99" />
                </resource>
                <resource id="Magento_Backend::stores">
                    <resource id="Magento_Backend::stores_settings">
                        <resource id="Magento_Config::config">
                            <resource id="Mageplaza_HelloWorld::helloworld_config" title="Hello World"/>
                        </resource>
                    </resource>
                </resource>
            </resource>
        </resources>
    </acl>
</config>

Our resource will be placed as child of Magento_Backend::admin. Each resource will have an Id, title and sortOrder attribute:

  • Id attribute is the identify of this resource. You can use this when define resource in Admin menu, configuration and limit access to your module controller. This is a unique string and should be in this format: Vendor_ModuleName::resource_name.
  • Title attribute is the label of this resource when showing in resource tree.
  • sortOrder attribute define the position of this resource in tree.

After this done, please refresh the cache and see the result on resource tree

magento 2 admin acl

Step 2: Flush Magento cache

Make sure it admin menu items are displayed on Magento 2 admin, you should try to flush Magento 2 cache.

Step 3: Check ACL rule

There are some place where we put the ACL resource to make it limit the access:

Admin menu: Put the ACL resource to hide the menu if it’s not allowed by store owner.

File: app/code/Mageplaza/HelloWorld/etc/adminhtml/menu.xml

<add id="Mageplaza_HelloWorld::helloworld" title="Hello World" module="Mageplaza_HelloWorld" sortOrder="51" resource="Mageplaza_HelloWorld::helloworld"/>

System configuration: Put the ACL resource to limit access to this section page.

File: app/code/Mageplaza/HelloWorld/etc/adminhtml/system.xml

<section id="helloworld" translate="label" sortOrder="130" showInDefault="1" showInWebsite="1" showInStore="1">
        ….
            <resource>Mageplaza_HelloWorld::helloworld_configuration</resource>
        ….
</section>

We will use Mageplaza_HelloWorld::helloworld_configuration in Magento 2 How to Create System.xml Configuration

With resource it also use on controller.

In admin controllers: Magento provides an abstract type Magento\Framework\AuthorizationInterface which you can use to validate the currently logged in user against a specific ACL. You can call that object by use the variable: $this->_authorization. In the controller, you have to write a protected function to check the resource:

Example: File: vendor/magento/module-customer/Controller/Adminhtml/Index.php

protected function _isAllowed()
{
 return $this->_authorization->isAllowed('Magento_Customer::manage');
}
  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg
Email ThisBlogThis!Share to XShare to Facebook
Newer Post Older Post Home

0 comments:

Post a Comment

Thanks

Meta

Popular Posts

  • Generate Migrations from an Existing Database With the Migration Generator Package
    Laravel Migration Generator Migration Generator for Laravel is a package by Bennett Treptow to generate migrations from existing database ...
  • Tailwindcss best practices for responsive design
    Tailwind CSS provides powerful utilities for responsive design out of the box. To use it effectively and maintain clean, scalable code, here...
  • Search Through Models with Laravel Searchable
      Laravel Searchable   is a package by   Spatie   to search through models and other sources pragmatically. Using this package, you can get ...
  • Laravel Razorpay Integration | Payment gateway integration Laravel in 30 mins | Laravel Razorpay
    1 Integration of Razorpay with Laravel. In this tutorial, I have taught how to integrate payment gateway with laravel with mini-project. If...
  • Vue.js Render functions
        Vue.js Render functions Vue.js recommends us to use templates to build HTML. Here, we can use the render function as a closer-to-the-co...

Categories

  • Ajax (26)
  • Bootstrap (30)
  • DBMS (42)
  • HTML (12)
  • HTML5 (45)
  • JavaScript (10)
  • Jquery (34)
  • Jquery UI (2)
  • JqueryUI (32)
  • Laravel (1017)
  • Laravel Tutorials (23)
  • Laravel-Question (6)
  • Magento (9)
  • Magento 2 (95)
  • MariaDB (1)
  • MySql Tutorial (2)
  • PHP-Interview-Questions (3)
  • Php Question (13)
  • Python (36)
  • RDBMS (13)
  • SQL Tutorial (79)
  • Vue.js Tutorial (69)
  • Wordpress (150)
  • Wordpress Theme (3)
  • codeigniter (108)
  • oops (4)
  • php (853)

Social Media Links

  • Follow on Twitter
  • Like on Facebook
  • Subscribe on Youtube
  • Follow on Instagram

Pages

  • Home
  • Contact Us
  • Privacy Policy
  • About us

Blog Archive

  • ►  2026 (3)
    • ►  07/26 - 08/02 (2)
    • ►  06/28 - 07/05 (1)
  • ►  2025 (4)
    • ►  07/06 - 07/13 (2)
    • ►  06/29 - 07/06 (2)
  • ►  2024 (486)
    • ►  09/15 - 09/22 (30)
    • ►  09/08 - 09/15 (35)
    • ►  09/01 - 09/08 (35)
    • ►  08/11 - 08/18 (2)
    • ►  08/04 - 08/11 (33)
    • ►  07/28 - 08/04 (30)
    • ►  07/07 - 07/14 (11)
    • ►  06/30 - 07/07 (35)
    • ►  06/23 - 06/30 (5)
    • ►  06/02 - 06/09 (31)
    • ►  05/26 - 06/02 (20)
    • ►  05/05 - 05/12 (29)
    • ►  04/28 - 05/05 (26)
    • ►  04/07 - 04/14 (10)
    • ►  03/31 - 04/07 (34)
    • ►  03/24 - 03/31 (10)
    • ►  03/03 - 03/10 (35)
    • ►  02/25 - 03/03 (15)
    • ►  02/04 - 02/11 (22)
    • ►  01/28 - 02/04 (30)
    • ►  01/07 - 01/14 (8)
  • ►  2023 (484)
    • ►  12/31 - 01/07 (35)
    • ►  12/24 - 12/31 (10)
    • ►  12/03 - 12/10 (33)
    • ►  11/26 - 12/03 (20)
    • ►  11/05 - 11/12 (35)
    • ►  10/29 - 11/05 (20)
    • ►  10/22 - 10/29 (9)
    • ►  10/15 - 10/22 (7)
    • ►  10/08 - 10/15 (9)
    • ►  10/01 - 10/08 (10)
    • ►  09/24 - 10/01 (9)
    • ►  09/17 - 09/24 (9)
    • ►  09/10 - 09/17 (7)
    • ►  09/03 - 09/10 (9)
    • ►  08/27 - 09/03 (9)
    • ►  08/20 - 08/27 (8)
    • ►  08/13 - 08/20 (8)
    • ►  08/06 - 08/13 (8)
    • ►  07/30 - 08/06 (8)
    • ►  07/23 - 07/30 (7)
    • ►  07/16 - 07/23 (8)
    • ►  07/09 - 07/16 (7)
    • ►  07/02 - 07/09 (8)
    • ►  06/25 - 07/02 (7)
    • ►  06/18 - 06/25 (7)
    • ►  06/11 - 06/18 (7)
    • ►  06/04 - 06/11 (11)
    • ►  05/28 - 06/04 (7)
    • ►  05/21 - 05/28 (8)
    • ►  05/14 - 05/21 (11)
    • ►  05/07 - 05/14 (7)
    • ►  04/30 - 05/07 (7)
    • ►  04/23 - 04/30 (8)
    • ►  04/16 - 04/23 (9)
    • ►  04/09 - 04/16 (7)
    • ►  04/02 - 04/09 (4)
    • ►  03/26 - 04/02 (21)
    • ►  03/19 - 03/26 (2)
    • ►  03/12 - 03/19 (9)
    • ►  03/05 - 03/12 (26)
    • ►  02/26 - 03/05 (25)
    • ►  01/15 - 01/22 (7)
    • ►  01/08 - 01/15 (1)
  • ▼  2022 (1037)
    • ►  12/11 - 12/18 (13)
    • ►  12/04 - 12/11 (1)
    • ►  11/27 - 12/04 (40)
    • ►  11/06 - 11/13 (1)
    • ►  10/16 - 10/23 (13)
    • ►  09/04 - 09/11 (5)
    • ►  08/21 - 08/28 (24)
    • ►  08/14 - 08/21 (24)
    • ►  07/03 - 07/10 (9)
    • ►  06/19 - 06/26 (3)
    • ►  05/29 - 06/05 (3)
    • ►  05/22 - 05/29 (3)
    • ►  05/15 - 05/22 (109)
    • ►  05/01 - 05/08 (7)
    • ►  04/24 - 05/01 (7)
    • ►  04/17 - 04/24 (64)
    • ►  04/10 - 04/17 (115)
    • ►  04/03 - 04/10 (73)
    • ►  03/27 - 04/03 (77)
    • ►  03/13 - 03/20 (2)
    • ►  03/06 - 03/13 (25)
    • ►  02/27 - 03/06 (18)
    • ▼  02/20 - 02/27 (153)
      • Laravel artisan call with confirm
      • laravel array_pluck
      • Laravel arrays
      • Laravel array validation
      • Laravel api get controller
      • Laravel array to string error
      • Laravel array to string conversion
      • Laravel array search blade
      • Laravel array search blade
      • Laravel array in lang
      • Laravel array cast
      • Laravel APP_ENV config
      • Laravel append parameter to links
      • Laravel append array to array
      • Laravel app service provider why eloquent model error
      • Laravel app running in console
      • Laravel app get locale
      • Laravel apiresource
      • Laravel api too many requests
      • Laravel api routes
      • Laravel api form request validation 404
      • Laravel api error return homepage
      • Laravel API Endpoint "401 Unauthorized" on Server ...
      • Laravel API Endpoint "401 Unauthorized" on Server ...
      • Laravel api enable cors
      • Laravel api cors localhost issue
      • Laravel apache2
      • Laravel apache public folder
      • Laravel allow null records relationship
      • Laravel allow all fillable
      • Laravel ailed: WebSocket opening handshake was can...
      • Laravel after method()
      • Laravel admin panel free package
      • Laravel adding new items to config run time
      • Laravel adding condition to relation
      • Laravel add values to request
      • Laravel add utility class
      • Laravel add user
      • laravel add timestamps to existing table
      • Laravel add request
      • Laravel Add regx on password
      • laravel add package without updating
      • laravel add model to polymorphic relationships
      • laravel add model to one to many relationship
      • Get Product Collection Filter By Visibility in Mag...
      • Magento 2 Get All Order Collection with Filters
      • How to Get Product Collection by Category ID in Ma...
      • How to get Customer Collection in Magento 2
      • Disable a Payment Method Programmatically in Magen...
      • 4 Steps to add Custom Tab in Customer Account in M...
      • Magento 2 Javascript Bundling - Group/Combine JS f...
      • Magento 2 Get All Payment Methods
      • Magento 2 How to Unlock Reindex Process: Index is ...
      • Magento 2 Display Error Enable Error Reporting
      • How To Add A Navigation Link In My Account On Mage...
      • How to add Quick View feature in Magento 2
      • How to Add Custom Tab in Product Page Magento 2
      • How To Add CMS Block In Checkout Page Magento 2
      • How to make Sidebar sticky in Magento 2
      • How To Add Custom Columns To Magento 2
      • Enable/ Disable Magento 2 Developer Mode
      • 3 Steps to Create Helper Class in Magento 2
      • Magento 2 Slow? 10 Steps to Speed Up Magento 2
      • Magento 2 Areas vs Modules
      • How to Connect to Magento 2 using Terminal SSH
      • 4 Steps to Install Magento 2 on XAMPP Windows
      • 7 Steps to Install Magento 2 on Ubuntu/Debian [Lat...
      • 4 Steps to Install Magento 2 on MAC OSX
      • 6 Steps to Install Magento 2 on CentOS [Latest] - ...
      • Magento 2 File Structure - Folder, Module Director...
      • Clear Cache Programmatically Magento 2
      • How to add a custom Zipcode validator in checkout ...
      • LaRecipe: Documentation with Markdown in Your Lara...
      • Magento 2 Factory Object
      • Create Resource Model - Get Model Collection in Ma...
      • Magento 2 Create Model
      • How to Create a Custom Widget in Magento 2
      • Create Payment Method
      • Magento 2 Create Shipping Method
      • How to Create Cron Job Programmatically in Magento 2
      • Magento 2 Create API with samples - Snippet
      • Magento 2 Add Category Attributes Programmatically
      • Magento 2 Create Events - Observer in Magento 2
      • How to rewrite controller in Magento 2
      • Magento 2 Cache and Page Cache Overview
      • Magento 2 Module Creator
      • How to Create Module in Magento 2 - Helloworld dev...
      • Magento 2 Add Product Attribute Programmatically
      • Magento 2 Add Customer Attribute Programmatically
      • How to use Command Line Interface CLI
      • How to Add Command line in to Console CLI in Magen...
      • Magento 2 Indexing & Reindex
      • Magento 2 Plugin - Interceptor
      • Magento 2 Routing
      • Magento 2 Events
      • How to Create Setup, Upgrade, Uninstall Script in ...
      • How to Create/Save Admin Grid in Magento 2
      • Magento 2 How to Create System.xml Configuration
      • Magento 2 Create Admin Menu
      • Magento 2 Admin ACL Access Control Lists
      • Magento 2 Create View: Block, Layouts, Templates
      • CRUD Models in Magento 2
      • How to Create Controller in Magento 2
      • Magento 2 Module Development - Simple Hello World ...
      • How to add a custom Zipcode validator in checkout ...
      • How to add custom shipping validations Magento 2
      • How to customize a checkout step in Magento 2
      • Magento 2 Theme Development from Scratch
      • Install the Magento 2 step by steps fully tutorial...
      • Use Laravel GeoIP to Determine Users’ Geographical...
      • A Stand-Alone Laravel Slack Package
      • Laravel View Components Package
      • Plug and Play Avatars in Laravel with Laravolt
      • Laravel Localization Package for Vue
      • Laravel Breadcrumbs Package
      • Automatically Open Files on Artisan “Make” Commands
      • Laravel Tenancy – Multi-Tenant Package for Laravel
      • Eventy: WordPress-like Actions and Filters for Lar...
      • Laravel Self-Diagnosis Package
      • Laravel Relationship Events
      • Count Models With the Laravel Visits Package
      • Laravel View X-Ray
      • Laravel Love: Likes and Dislikes for Eloquent Models
      • Laravel Befriended
      • Laravel Enum Package
      •  LaRecipe is a code-driven package created by Sale...
      • Laratables: Ajax support of DataTables in Laravel
      • Luhn Algorithm Package for Laravel
    • ►  02/13 - 02/20 (187)
    • ►  01/30 - 02/06 (45)
    • ►  01/23 - 01/30 (15)
    • ►  01/16 - 01/23 (1)
  • ►  2021 (412)
    • ►  10/24 - 10/31 (2)
    • ►  07/25 - 08/01 (1)
    • ►  07/11 - 07/18 (10)
    • ►  06/13 - 06/20 (29)
    • ►  05/23 - 05/30 (1)
    • ►  05/02 - 05/09 (24)
    • ►  04/25 - 05/02 (24)
    • ►  04/18 - 04/25 (112)
    • ►  04/11 - 04/18 (1)
    • ►  04/04 - 04/11 (6)
    • ►  03/28 - 04/04 (86)
    • ►  03/21 - 03/28 (19)
    • ►  03/14 - 03/21 (2)
    • ►  03/07 - 03/14 (10)
    • ►  02/28 - 03/07 (1)
    • ►  02/21 - 02/28 (29)
    • ►  02/14 - 02/21 (13)
    • ►  02/07 - 02/14 (12)
    • ►  01/31 - 02/07 (6)
    • ►  01/17 - 01/24 (2)
    • ►  01/10 - 01/17 (8)
    • ►  01/03 - 01/10 (14)
  • ►  2020 (376)
    • ►  12/27 - 01/03 (37)
    • ►  12/20 - 12/27 (92)
    • ►  12/13 - 12/20 (29)
    • ►  12/06 - 12/13 (37)
    • ►  11/29 - 12/06 (4)
    • ►  11/15 - 11/22 (14)
    • ►  11/08 - 11/15 (8)
    • ►  11/01 - 11/08 (2)
    • ►  10/18 - 10/25 (14)
    • ►  10/11 - 10/18 (16)
    • ►  10/04 - 10/11 (10)
    • ►  09/20 - 09/27 (10)
    • ►  09/06 - 09/13 (19)
    • ►  08/30 - 09/06 (26)
    • ►  08/23 - 08/30 (4)
    • ►  08/16 - 08/23 (2)
    • ►  07/12 - 07/19 (48)
    • ►  05/17 - 05/24 (2)
    • ►  01/05 - 01/12 (2)
  • ►  2019 (74)
    • ►  07/07 - 07/14 (6)
    • ►  06/16 - 06/23 (6)
    • ►  02/10 - 02/17 (17)
    • ►  01/13 - 01/20 (37)
    • ►  01/06 - 01/13 (8)
  • ►  2018 (376)
    • ►  12/30 - 01/06 (24)
    • ►  12/16 - 12/23 (8)
    • ►  12/09 - 12/16 (98)
    • ►  12/02 - 12/09 (16)
    • ►  11/18 - 11/25 (36)
    • ►  11/04 - 11/11 (18)
    • ►  10/28 - 11/04 (10)
    • ►  10/21 - 10/28 (26)
    • ►  10/14 - 10/21 (52)
    • ►  10/07 - 10/14 (4)
    • ►  09/30 - 10/07 (2)
    • ►  09/23 - 09/30 (68)
    • ►  09/16 - 09/23 (4)
    • ►  09/09 - 09/16 (4)
    • ►  08/26 - 09/02 (6)

Data Publish News

Loading...

Al Jazeera – Breaking News, World News and Video from Al Jazeera

Loading...

Laravel News

Loading...

Copyright © CoderFunda | Powered by Blogger
Design by Coderfunda | Blogger Theme by Coderfunda | Distributed By Coderfunda