Skip to content

Permissions (ACL)

The extension adds two privileges to the role system of Shopware. They control the Administration module and the Admin API routes of the extension. A role that you grant in the Administration therefore also applies to integrations.

The two privilege groups

Open Settings → Users & permissions → Roles, edit a role, and find the Catalogues group of the permissions matrix. The extension adds a row with the label AI Translation and two privileges:

Privilege keyPurpose
nice_translate.viewerRead-only access to everything that the module shows.
nice_translate.editorEverything that starts, changes or undoes a translation, and also the settings and the glossary.

The extension ships no labels of its own for the two privileges. Identify them by their keys: nice_translate.viewer and nice_translate.editor.

nice_translate.editor depends on nice_translate.viewer. If you grant the editor privilege, Shopware adds the viewer privilege automatically. The editor privilege alone is not a valid configuration.

What the privileges contain

PrivilegeShopware privileges granted
nice_translate.viewernice_translate_job:read, nice_translate_job_error:read, nice_translate_glossary:read, nice_translate_usage:read, nice_translate_history:read, language:read, locale:read, user:read, system_config:read
nice_translate.editornice_translate_job:create, nice_translate_job:update, nice_translate_job:delete, nice_translate_glossary:create, nice_translate_glossary:update, nice_translate_glossary:delete, nice_translate_history:update, system_config:update

WARNING

system_config:update is the generic privilege of Shopware for a write to the system configuration. The settings page of the extension needs it to save, but the privilege covers the full shop configuration. Consider that before you grant the editor privilege to an account that must never change the shop configuration.

What each role can do

Capabilitynice_translate.viewernice_translate.editor
Open Catalogues → AI Translation (dashboard)YesYes
See the monthly usage panelYesYes
See the coverage matrixYesYes
Use Translate missing on a coverage rowNoYes
Open the job list and the job detail pagesYesYes
Open the translation history and compare the previous and new valuesYesYes
Open the glossary and export it as a CSV fileYesYes
Start a translation: New translation or the wizardNoYes
Quick translate from a product, a category or the product listNoYes
Cancel a running jobNoYes
Retry the failed itemsNoYes
Revert a full completed jobNoYes
Revert or re-apply individual history entriesNoYes
Add, edit or delete glossary terms; import a glossary CSV fileNoYes
Open Settings (the settings page of the extension)NoYes
Save the settings and test the provider connectionsNoYes
Subscribe to modernice All-in-One or refresh its statusNoYes

Each module route declares its privilege, therefore Shopware blocks a page that the user must not open. Inside the pages, the Administration hides or disables the commands that need the editor privilege. Without that privilege, the bulk Translate action in the product list is never rendered.

The content access comes from the privileges of Shopware itself, separately from these two. A user with nice_translate.editor still needs the normal product, category or CMS privileges to open the translated records in the Administration.

One exception is important: the start of a job. A job executes in the background under a system context, without the session of the user. nice_translate.editor alone is therefore sufficient to start a run that writes content that the same user cannot edit by hand.

Which role for which team

Translators, localisation agencies and content teams: nice_translate.editor. They need it to complete the wizard, to quick-translate one product, to retry a failed job and to roll an unsuitable translation back. They also need it to maintain the glossary, which keeps the brand vocabulary consistent.

Shop managers, stakeholders and monitoring accounts: nice_translate.viewer. The viewer privilege is sufficient for four tasks: watch the coverage, follow the job progress, read the error list, and examine what the extension wrote. It offers no way to spend the provider budget.

There is no third role between the two, which is important for agencies that must stay out of your provider settings. The editor privilege covers "start translations" and "edit settings" together. An account that must never see or change the API keys and the automation therefore cannot have it. Keep such an account on viewer, and let an internal editor account start the runs. As an alternative, use the CLI from a deployment context.

The ACL and the Admin API

Each Admin API route of the extension declares its own privilege, therefore the same rules limit an integration and a user. The privilege belongs to the route itself, and the HTTP method does not imply it.

Most routes follow a predictable pattern:

  • The routes that read (content types, coverage, providers and models, usage, subscription status, glossary export) need nice_translate.viewer.
  • The routes that create, change or undo something need nice_translate.editor. These routes create a job, cancel it, retry it, revert it, revert or re-apply history, import a glossary, test a provider key, and refresh the subscription.

Two routes break that pattern. The cost estimate is a POST that only calculates, and it still needs nice_translate.editor. The model listing accepts a POST so that you can pass an unsaved API key, and it still needs nice_translate.viewer only. In case of doubt, read the privilege for each route.

The job listings, the job details and the glossary records go through the generated entity endpoints of Shopware. The privileges nice_translate_job:read, nice_translate_job_error:read, nice_translate_history:read and nice_translate_glossary:* from the table above control them.

The Admin API reference contains the full route table, with the privilege, the payload and the error responses of each route.

modernice extensions for Shopware 6. Shopware is a trademark of shopware AG — this documentation is not affiliated with shopware AG.