Read More
Read More
Menu Close

    Magento 2- How to create user role programmatically by custom module installer

    Here we create admin user role programmatically by custom module installer with specific resources.

    1=>First you need to create a installer file name InstallData.php in our custom module Setup folder

    complete path: app/code/ModuleNameSpace/YourModuleName/Setup

    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->setName('YourRoleName') //Set Role Name Which you want to create 
                    ->setPid(0) //set parent role id of your role
            /* Now we set that which resources we allow to this role */
    					'Magento_Sales::actions_view', //you will use resource id which you want tp allow
            /* Array of resource ids which we want to allow this role*/

    You can get resources id as explain in following snap

    After adding these file install your custom module in your magento2 instance

    Searching for an experienced
    Magento Company ?
    Read More

    then by terminal run following commend in your magento2 root directory

    php bin/magento setup:upgrade

    Now  your admin user role created  you can check it  form System > Permission > User Role as following 🙂


    . . .
    Discuss on Helpdesk

    Leave a Comment

    Your email address will not be published. Required fields are marked*

    Be the first to comment.

    Back to Top