Here we create admin user role programmatically by custom module installer with specific resources.
1=>First you need to create an installer file named InstallData.php in our custom module Setup folder
complete path: app/code/ModuleNameSpace/YourModuleName/Setup
<?php namespace ModuleNameSpace\YourModuleName\Setup; use Magento\Framework\Setup\InstallDataInterface; use Magento\Framework\Setup\ModuleContextInterface; use Magento\Framework\Setup\ModuleDataSetupInterface; /* For get RoleType and UserType for create Role */; use Magento\Authorization\Model\Acl\Role\Group as RoleGroup; use Magento\Authorization\Model\UserContextInterface; /** * @codeCoverageIgnore */ class InstallData implements InstallDataInterface { /** * RoleFactory * * @var roleFactory */ private $roleFactory; /** * RulesFactory * * @var rulesFactory */ private $rulesFactory; /** * Init * * @param \Magento\Authorization\Model\RoleFactory $roleFactory * @param \Magento\Authorization\Model\RulesFactory $rulesFactory */ public function __construct( \Magento\Authorization\Model\RoleFactory $roleFactory, /* Instance of Role*/ \Magento\Authorization\Model\RulesFactory $rulesFactory /* Instance of Rule */ /*this define that which resource permitted to wich role */ ) { $this->roleFactory = $roleFactory; $this->rulesFactory = $rulesFactory; } /** * {@inheritdoc} * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context) { /** * Create Warehouse role */ $role=$this->roleFactory->create(); $role->setName('YourRoleName') //Set Role Name Which you want to create ->setPid(0) //set parent role id of your role ->setRoleType(RoleGroup::ROLE_TYPE) ->setUserType(UserContextInterface::USER_TYPE_ADMIN); $role->save(); /* Now we set that which resources we allow to this role */ $resource=['Magento_Backend::admin', 'Magento_Sales::sales', 'Magento_Sales::create', 'Magento_Sales::actions_view', //you will use resource id which you want to allow 'Magento_Sales::cancel' ]; /* Array of resource ids which we want to allow this role*/ $this->rulesFactory->create()->setRoleId($role->getId())->setResources($resource)->saveRel(); } }
You can get resources id as explain in following snap
After adding these files install your custom module in your magento2 instance
then by terminal run the following command in your magento2 root directory
php bin/magento setup:upgrade
Now your admin user role created you can check it from System > Permission > User Role as follows 🙂
Be the first to comment.