diff --git a/jsonapi_extras.install b/jsonapi_extras.install index 21131448992f97df75c9d49098f00bf0183c0aa8..a3339906b39c4db0e6a2e2c7de089c5387fee7d6 100644 --- a/jsonapi_extras.install +++ b/jsonapi_extras.install @@ -2,7 +2,7 @@ /** * @file - * Module installation file. + * Install, update and uninstall functions for the JSON API Extras module. */ declare(strict_types=1); @@ -20,3 +20,19 @@ function jsonapi_extras_update_9001() { // Since the schema changes may not be there yet, we need to trust the data. $editable_config->save(TRUE); } + +/** + * Implements hook_update_N(). + */ +function jsonapi_extras_update_9002() { + /** @var \Drupal\user\Entity\Role $role_storage */ + $role_storage = \Drupal::entityTypeManager()->getStorage('user_role'); + + foreach ($role_storage->loadMultiple() as $role) { + // Grant 'administer json api extra configuration' + // if role has 'administer site configuration' permission. + if ($role->hasPermission('administer site configuration')) { + $role->grantPermission('administer json api extra configuration')->save(); + } + } +} diff --git a/jsonapi_extras.permissions.yml b/jsonapi_extras.permissions.yml new file mode 100644 index 0000000000000000000000000000000000000000..7702bd5131da2f5e86de01b77da1ee6585525dc4 --- /dev/null +++ b/jsonapi_extras.permissions.yml @@ -0,0 +1,3 @@ +administer json api extra configuration: + title: 'Administer JSON API extra configuration' + description: "Allow access and update JSON API extra configurations." diff --git a/jsonapi_extras.routing.yml b/jsonapi_extras.routing.yml index bd4b24c53be764920084ba637049c2d480b84611..26673e5d2415561527c180df2748b382c9516624 100644 --- a/jsonapi_extras.routing.yml +++ b/jsonapi_extras.routing.yml @@ -4,4 +4,4 @@ jsonapi_extras.settings: _form: '\Drupal\jsonapi_extras\Form\JsonapiExtrasSettingsForm' _title: 'JSON:API Extras' requirements: - _permission: 'administer site configuration' + _permission: 'administer json api extra configuration' diff --git a/src/Entity/JsonapiResourceConfig.php b/src/Entity/JsonapiResourceConfig.php index 3fe2a29e2df0a5628769c078c90b018c0bfe2b2f..1379c55a00749e9d489f16914e70f8bc7f05be60 100644 --- a/src/Entity/JsonapiResourceConfig.php +++ b/src/Entity/JsonapiResourceConfig.php @@ -33,7 +33,7 @@ use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException; * }, * }, * config_prefix = "jsonapi_resource_config", - * admin_permission = "administer site configuration", + * admin_permission = "administer json api extra configuration", * static_cache = TRUE, * entity_keys = { * "id" = "id", diff --git a/tests/src/Functional/JsonApiExtrasFunctionalTest.php b/tests/src/Functional/JsonApiExtrasFunctionalTest.php index 60c96518aab54f4c37b2975cfa281e596769bc35..5f27b5eee7697dda6f4862cf25957bdb201b867a 100644 --- a/tests/src/Functional/JsonApiExtrasFunctionalTest.php +++ b/tests/src/Functional/JsonApiExtrasFunctionalTest.php @@ -124,10 +124,10 @@ class JsonApiExtrasFunctionalTest extends JsonApiFunctionalTestBase { static::overrideResources(); $this->resetAll(); $role = $this->user->get('roles')[0]->entity; - $this->grantPermissions( - $role, - ['administer nodes', 'administer site configuration'] - ); + $this->grantPermissions($role, [ + 'administer nodes', + 'administer json api extra configuration', + ]); } /** diff --git a/tests/src/Functional/JsonApiExtrasFunctionalTestBase.php b/tests/src/Functional/JsonApiExtrasFunctionalTestBase.php index 6786f88c1ff2893d4b528a9666f20926e356f1fa..c231a8972a38b77d58a77b98879eb0a318bfff8c 100644 --- a/tests/src/Functional/JsonApiExtrasFunctionalTestBase.php +++ b/tests/src/Functional/JsonApiExtrasFunctionalTestBase.php @@ -62,10 +62,10 @@ abstract class JsonApiExtrasFunctionalTestBase extends JsonApiFunctionalTestBase static::overrideResources(); $this->resetAll(); $role = $this->user->get('roles')[0]->entity; - $this->grantPermissions( - $role, - ['administer nodes', 'administer site configuration'] - ); + $this->grantPermissions($role, [ + 'administer nodes', + 'administer json api extra configuration', + ]); } /**