How to push permissions to Scratch environment
To update permissions for a module on a Scratch environment we need to register a module descriptor in okapi. This is how you do this:
Create a descriptor file on your machine (I will call it
descriptor.json
) with following content:
Replace following placeholders:
moduleName - name property in package.json without "@folio/"moduleVersion - version of module. It's a bit of a hack to get it - go to module's page in npm-folioci (for example https://repository.folio.org/service/rest/repository/browse/npm-folioci/%40folio/eholdings/), find the latest version number and use it as version.
moduleDescription - description property in package.json
requires - list of required interfaces. Can also be found in package.json
permissionSets - list of UI permissions. Can be found in package.json{ "id": "folio_moduleName-moduleVersion", "name": "moduleDescription", "requires": [ { "id": "interfaceId", "version": "interfaceVersion" } ], "optional": [], "permissionSets": [ { "permissionName": "module.eholdings.enabled", "displayName": "UI: eHoldings module is enabled", "subPermissions": [ "kb-ebsco.all", "tags.all" ], "visible": false },
... ] }- Run the following command to push the descriptor to okapi
curl -sL -w '\n' -D - -X POST -H "Content-type: application/json" -d @/descriptor.json $OKAPI_URL/_/proxy/modules?check=false
Replace $OKAPI_URL with okapi url of scratch environment
If you get an error saying that version already exists - change patch of moduleVersion to something else like "0000001" - Run the following command to enable module for tenant (again, replace moduleName and moduleVersion placeholders from descriptor)
curl -w '\n' -X POST -d '[ { "id" : "folio_moduleName-moduleVersion" , "action" : "enable" } ]' $OKAPI_URL/_/proxy/tenants/diku/install
- Run bootstrap script
docker run --rm -e TENANT_ID=diku -e ADMIN_USER=diku_admin -e ADMIN_PASSWORD=admin -e OKAPI_URL=$OKAPI_URL docker.dev.folio.org/bootstrap-superuser