1.20.x field.install field_update_1002()

Grant the new "administer fields" permission to trusted users.

File

modules/field/field.install, line 100
Install, update and uninstall functions for the field module.

Code

function field_update_1002() {
  // Assign the permission to anyone that already has a trusted core permission
  // that would have previously let them administer fields on an entity type.
  $role_names = array();
  $permissions = array(
    'administer site configuration',
    'administer content types',
    'administer users',
  );
  foreach ($permissions as $permission) {
    $role_names = array_merge($role_names, array_keys(user_roles(FALSE, $permission)));
  }
  $role_names = array_unique($role_names);
  foreach ($role_names as $role_name) {
    $role_config = config('user.role.' . $role_name);
    $permissions = array_unique(array_merge($role_config->get('permissions'), array('administer fields')));
    $role_config->set('permissions', $permissions);
    $role_config->save();
  }
}