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 key | Purpose |
|---|---|
nice_translate.viewer | Read-only access to everything that the module shows. |
nice_translate.editor | Everything 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
| Privilege | Shopware privileges granted |
|---|---|
nice_translate.viewer | nice_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.editor | nice_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
| Capability | nice_translate.viewer | nice_translate.editor |
|---|---|---|
| Open Catalogues → AI Translation (dashboard) | Yes | Yes |
| See the monthly usage panel | Yes | Yes |
| See the coverage matrix | Yes | Yes |
| Use Translate missing on a coverage row | No | Yes |
| Open the job list and the job detail pages | Yes | Yes |
| Open the translation history and compare the previous and new values | Yes | Yes |
| Open the glossary and export it as a CSV file | Yes | Yes |
| Start a translation: New translation or the wizard | No | Yes |
| Quick translate from a product, a category or the product list | No | Yes |
| Cancel a running job | No | Yes |
| Retry the failed items | No | Yes |
| Revert a full completed job | No | Yes |
| Revert or re-apply individual history entries | No | Yes |
| Add, edit or delete glossary terms; import a glossary CSV file | No | Yes |
| Open Settings (the settings page of the extension) | No | Yes |
| Save the settings and test the provider connections | No | Yes |
| Subscribe to modernice All-in-One or refresh its status | No | Yes |
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.
Related pages
- Translation wizard for the main editor-only workflow.
- Settings reference for everything on the settings page that needs the editor privilege.
- Admin API for the routes and their necessary privileges.