3

I have installed Drupal 8.6.3 minimum profile and found out that there's no Administrator role under permissions section. Is this normal or am I missing something?

We have few people that needs to be using Admin roles, so without a Administrator role, I can't assign them to such a role.

enter image description here

  • 1
    @see Document difference between "standard" and "minimal" core install profiles which I found after googling for: drupal minimal profile administrator role. – leymannx Jan 22 at 7:31
  • Thanks for the answer @leymannx Can't I just create the Administrator role without reinstalling a standard profile as I have already in the middle of the project? – user2574948 Jan 22 at 7:42
  • I'd say so. But better try it out yourself. Dump your current database. Then try it out. If it's not working as expected drop the database and reimport the previously dumped database. – leymannx Jan 22 at 7:55
8

Yes, that is expected, since the Minimal profile creates less entities than the Standard profile. You can see that by comparing the config/install directory in the first profile with the config/install directory in the latter profile.

As per creating the role from the user interface, that would be possible, but the created role would be a role like the others, while the Administrator role created from the Standard profile automatically gets all the permissions defined in a Drupal site. In fact, Role::hasPermission() uses the following code.

  if ($this->isAdmin()) {
    return TRUE;
  }
  return in_array($permission, $this->permissions);

For the Administrator role, $this->isAdmin() always return TRUE; for every role you create from the user interface, $this->isAdmin() would return FALSE.

If you need that role, and you cannot reinstall Drupal using the Standard profile, you can create a custom module, for which you create a config/optional/user.role.administrator.yml file with the following content.

langcode: en
status: true
dependencies:
  enforced:
    module:
      - yourmodule
id: administrator
label: Administrator
weight: 2
is_admin: true
permissions: {  }

(Replace yourmodule with the module name.)

When the module is installed, the role will be created. Since the file contains is_admin: true, the role will have all the permissions, automatically, like the Administrator role created by the Standard profile.

The alternative method that doesn't involve writing modules is importing the user.role.administrator.yml file in the site. The content of the file is similar to the content of the file I previously suggested, with the exception that there aren't depencies.

langcode: en
status: true
dependencies: {  }
id: administrator
label: Administrator
weight: 2
is_admin: true
permissions: {  }

I would use the custom module method if there are other entities/bundles that you normally create when installing Drupal for a new site.
If instead you don't have the need to create other entities/bundles, importing a single file is quicker.

  • 2
    Very profound answer. Another option to create the role would be to import the YAML code in UI here: admin/config/development/configuration/single/import – 4k4 Jan 22 at 10:11
  • What about: drush role-create 'administrator' 'Administrator' – rebeling Feb 8 at 22:55
  • @rebeling I am not sure it works, if role-create doesn't have a flag that makes the role have is_admin set to TRUE. The role name doesn't have a particular meaning, or Drupal 8 would not have is_admin in the YAML settings for a role. – kiamlaluno Feb 9 at 8:17
  • 1
    ha, just changed the yaml for this role is_admin from null to true and imported the config ...the role is_admin now. thx – rebeling Feb 9 at 18:53
  • Thanks @rebeling, I found the yaml config in web/core/profiles/standard/config/install/user.role.administrator.yml and imported it. Worked perfect. @klamlaluno, I'd suggest adding that method to your answer. :) – David R. Oct 27 at 2:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.