diff --git a/frontend/src/lib/locales/de/admin.js b/frontend/src/lib/locales/de/admin.js
index 094e8d09f..00e4f660f 100644
--- a/frontend/src/lib/locales/de/admin.js
+++ b/frontend/src/lib/locales/de/admin.js
@@ -836,6 +836,10 @@ export default {
routeAuth_session: 'Sitzung',
routeAuth_admin: 'Administrator',
routeAuth_none: 'Öffentlich',
+ hostFunctionPermissions: 'Host-Funktionsberechtigungen',
+ permissionGranted: 'Erteilt',
+ permissionDenied: 'Verweigert',
+ permissionsDeniedNote: 'Einige deklarierte Berechtigungen sind nicht wirksam.',
moduleSettingsNote: 'Änderungen an Moduleinstellungen werden sofort wirksam. Das Deaktivieren eines Moduls blendet es aus der Navigation aus.',
failedToUpload: 'Hochladen fehlgeschlagen: {error}',
failedToReload: 'Plugin konnte nicht neu geladen werden: {error}',
diff --git a/frontend/src/lib/locales/en/admin.js b/frontend/src/lib/locales/en/admin.js
index 57b3c741b..bbd42dab7 100644
--- a/frontend/src/lib/locales/en/admin.js
+++ b/frontend/src/lib/locales/en/admin.js
@@ -903,6 +903,10 @@ export default {
routeAuth_session: 'Session',
routeAuth_admin: 'Admin',
routeAuth_none: 'Public',
+ hostFunctionPermissions: 'Host Function Permissions',
+ permissionGranted: 'Granted',
+ permissionDenied: 'Denied',
+ permissionsDeniedNote: 'Some declared permissions are not in effect.',
moduleSettingsNote:
'Changes to module settings take effect immediately. Disabling a module will hide it from the navigation.',
failedToUpload: 'Upload failed: {error}',
diff --git a/frontend/src/lib/locales/fr/admin.js b/frontend/src/lib/locales/fr/admin.js
index ff8e4469d..54cd92bcc 100644
--- a/frontend/src/lib/locales/fr/admin.js
+++ b/frontend/src/lib/locales/fr/admin.js
@@ -845,6 +845,10 @@ export default {
routeAuth_session: 'Session',
routeAuth_admin: 'Administrateur',
routeAuth_none: 'Public',
+ hostFunctionPermissions: 'Permissions des fonctions hôtes',
+ permissionGranted: 'Accordée',
+ permissionDenied: 'Refusée',
+ permissionsDeniedNote: 'Certaines permissions déclarées ne sont pas effectives.',
moduleSettingsNote:
'Les modifications des paramètres de module prennent effet immédiatement. Désactiver un module le masquera de la navigation.',
failedToUpload: 'Échec du téléversement : {error}',
diff --git a/frontend/src/lib/locales/ru/admin.js b/frontend/src/lib/locales/ru/admin.js
index 5490cd9f7..c4e7c191a 100644
--- a/frontend/src/lib/locales/ru/admin.js
+++ b/frontend/src/lib/locales/ru/admin.js
@@ -942,6 +942,10 @@ export default {
routeAuth_session: 'Сессия',
routeAuth_admin: 'Администратор',
routeAuth_none: 'Публичный',
+ hostFunctionPermissions: 'Разрешения хост-функций',
+ permissionGranted: 'Предоставлено',
+ permissionDenied: 'Отклонено',
+ permissionsDeniedNote: 'Некоторые объявленные разрешения не действуют.',
moduleSettingsNote:
'Изменения настроек модулей применяются сразу. Отключённый модуль будет скрыт из навигации.',
failedToUpload: 'Не удалось загрузить: {error}',
diff --git a/frontend/src/lib/locales/zh-CN/admin.js b/frontend/src/lib/locales/zh-CN/admin.js
index 3c37d065d..e2218cd3c 100644
--- a/frontend/src/lib/locales/zh-CN/admin.js
+++ b/frontend/src/lib/locales/zh-CN/admin.js
@@ -726,6 +726,10 @@ export default {
routeAuth_session: '会话',
routeAuth_admin: '管理员',
routeAuth_none: '公开',
+ hostFunctionPermissions: '宿主函数权限',
+ permissionGranted: '已授予',
+ permissionDenied: '已拒绝',
+ permissionsDeniedNote: '部分声明的权限未生效。',
moduleSettingsNote: '模块设置的更改会立即生效。禁用模块将从导航中隐藏它。',
failedToUpload: '上传失败:{error}',
failedToReload: '重新加载插件失败:{error}',
diff --git a/frontend/src/lib/settings/ModuleSettings.svelte b/frontend/src/lib/settings/ModuleSettings.svelte
index db2c6090a..98339f058 100644
--- a/frontend/src/lib/settings/ModuleSettings.svelte
+++ b/frontend/src/lib/settings/ModuleSettings.svelte
@@ -550,8 +550,34 @@
{/if}
+
+ {#if plugin.requested_permissions && plugin.requested_permissions.length > 0}
+
+
{t('settings.modules.hostFunctionPermissions')}:
+
+ {#each plugin.requested_permissions as permission, permissionIndex}
+ {@const granted = (plugin.effective_permissions || []).includes(permission)}
+
+ {permission}
+
+ {/each}
+
+ {#if (plugin.effective_permissions || []).length < plugin.requested_permissions.length}
+
{t('settings.modules.permissionsDeniedNote')}
+ {/if}
+
+ {/if}
-
+
{#if !pluginsDisabled}