From d0b27dce72c1db97ddc7ac784d8ecd903d548e4c Mon Sep 17 00:00:00 2001 From: Artyom Savchenko Date: Mon, 6 Apr 2026 23:29:11 +0700 Subject: [PATCH] feat: Anonymous guest permissions (#10726) * Anonymous guest permissions Signed-off-by: Artem Savchenko * Fix channels dropdown Signed-off-by: Artem Savchenko * Update guest layout Signed-off-by: Artem Savchenko --------- Signed-off-by: Artem Savchenko --- dev/docker-compose.yaml | 2 +- dev/prod/public/config.json | 2 +- models/card/src/index.ts | 14 + models/chunter/src/index.ts | 14 + models/chunter/src/plugin.ts | 3 +- models/controlled-documents/src/index.ts | 14 + models/controlled-documents/src/plugin.ts | 3 +- models/document/src/index.ts | 14 + models/document/src/plugin.ts | 3 +- models/drive/src/index.ts | 14 + models/drive/src/plugin.ts | 3 +- models/love/src/index.ts | 14 + models/love/src/plugin.ts | 3 +- models/test-management/src/index.ts | 14 + models/test-management/src/plugin.ts | 3 +- models/tracker/src/index.ts | 14 + models/tracker/src/plugin.ts | 1 + models/training/src/index.ts | 14 + models/training/src/plugin.ts | 3 +- .../ui/src/components/SwitcherBase.svelte | 5 +- plugins/card/src/index.ts | 3 +- plugins/setting-assets/lang/cs.json | 9 +- plugins/setting-assets/lang/de.json | 9 +- plugins/setting-assets/lang/en.json | 9 +- plugins/setting-assets/lang/es.json | 9 +- plugins/setting-assets/lang/fr.json | 9 +- plugins/setting-assets/lang/it.json | 9 +- plugins/setting-assets/lang/ja.json | 9 +- plugins/setting-assets/lang/pt-br.json | 9 +- plugins/setting-assets/lang/pt.json | 9 +- plugins/setting-assets/lang/ru.json | 9 +- plugins/setting-assets/lang/tr.json | 9 +- plugins/setting-assets/lang/zh.json | 9 +- .../src/components/General.svelte | 118 +---- .../GuestPermissionsSettings.svelte | 441 ++++++++++++++---- plugins/setting/src/index.ts | 7 +- .../src/components/Applications.svelte | 4 +- 37 files changed, 588 insertions(+), 250 deletions(-) diff --git a/dev/docker-compose.yaml b/dev/docker-compose.yaml index 0491c0f304..fe928696fb 100644 --- a/dev/docker-compose.yaml +++ b/dev/docker-compose.yaml @@ -310,7 +310,7 @@ services: - PAYMENT_URL=http://huly.local:3040 - COMMUNICATION_API_ENABLED=true - BACKUP_URL=http://huly.local:4039/api/backup, - - EXCLUDED_APPLICATIONS_FOR_ANONYMOUS=["chunter", "notification"] + - EXCLUDED_APPLICATIONS_FOR_ANONYMOUS=[] # - DISABLE_SIGNUP=true - OTEL_EXPORTER_OTLP_ENDPOINT=http://jaeger:4318/v1/traces - PULSE_URL=ws://huly.local:8099/ws diff --git a/dev/prod/public/config.json b/dev/prod/public/config.json index c339391708..a074414bee 100644 --- a/dev/prod/public/config.json +++ b/dev/prod/public/config.json @@ -30,7 +30,7 @@ "BACKUP_URL": "http://huly.local:4039/api/backup", "PULSE_URL": "ws://huly.local:8099/ws", "HULYLAKE_URL": "http://huly.local:8096", - "EXCLUDED_APPLICATIONS_FOR_ANONYMOUS": "[\"chunter\", \"notification\"]", + "EXCLUDED_APPLICATIONS_FOR_ANONYMOUS": "[]", "ANALYTICS_COLLECTOR_URL": "http://huly.local:4017", "LINK_PREVIEW_URL": "http://huly.local:4041" } diff --git a/models/card/src/index.ts b/models/card/src/index.ts index 9fb5c5afcc..8294d46d21 100644 --- a/models/card/src/index.ts +++ b/models/card/src/index.ts @@ -947,6 +947,20 @@ export function createModel (builder: Builder): void { card.ids.ModulePermissionGroup ) + builder.createDoc( + core.class.ModulePermissionGroup, + core.space.Model, + { + application: card.app.Card, + role: AccountRole.ReadOnlyGuest, + permissions: [], + spaceClass: card.class.CardSpace, + enabled: false, + order: 20 + }, + card.ids.ModulePermissionGroupReadOnlyGuest + ) + builder.mixin(card.class.Card, core.class.Class, view.mixin.ClassFilters, { filters: ['space'], ignoreKeys: ['parent'] diff --git a/models/chunter/src/index.ts b/models/chunter/src/index.ts index 41c0cb6cff..420d973a85 100644 --- a/models/chunter/src/index.ts +++ b/models/chunter/src/index.ts @@ -83,6 +83,20 @@ export function createModel (builder: Builder): void { chunter.ids.ModulePermissionGroup ) + builder.createDoc( + core.class.ModulePermissionGroup, + core.space.Model, + { + application: chunter.app.Chunter, + role: AccountRole.ReadOnlyGuest, + permissions: [], + spaceClass: chunter.class.ChunterSpace, + enabled: true, + order: 15 + }, + chunter.ids.ModulePermissionGroupReadOnlyGuest + ) + builder.createDoc( workbench.class.Widget, core.space.Model, diff --git a/models/chunter/src/plugin.ts b/models/chunter/src/plugin.ts index 7bffa1ca41..bc3c922bd5 100644 --- a/models/chunter/src/plugin.ts +++ b/models/chunter/src/plugin.ts @@ -95,7 +95,8 @@ export default mergeIds(chunterId, chunter, { }, ids: { ChunterNotificationGroup: '' as Ref, - ModulePermissionGroup: '' as Ref + ModulePermissionGroup: '' as Ref, + ModulePermissionGroupReadOnlyGuest: '' as Ref }, space: { General: '' as Ref, diff --git a/models/controlled-documents/src/index.ts b/models/controlled-documents/src/index.ts index be34b62b2c..c60a24f062 100644 --- a/models/controlled-documents/src/index.ts +++ b/models/controlled-documents/src/index.ts @@ -1124,6 +1124,20 @@ export function createModel (builder: Builder): void { }, documents.ids.ModulePermissionGroup ) + + builder.createDoc( + core.class.ModulePermissionGroup, + core.space.Model, + { + application: documents.app.Documents, + role: AccountRole.ReadOnlyGuest, + permissions: [], + spaceClass: documents.class.OrgSpace, + enabled: false, + order: 42 + }, + documents.ids.ModulePermissionGroupReadOnlyGuest + ) definePermissions(builder) defineNotifications(builder) defineSearch(builder) diff --git a/models/controlled-documents/src/plugin.ts b/models/controlled-documents/src/plugin.ts index ccf4155a91..4081905158 100644 --- a/models/controlled-documents/src/plugin.ts +++ b/models/controlled-documents/src/plugin.ts @@ -93,6 +93,7 @@ export default mergeIds(documentsId, documents, { StateNotification: '' as Ref }, ids: { - ModulePermissionGroup: '' as Ref + ModulePermissionGroup: '' as Ref, + ModulePermissionGroupReadOnlyGuest: '' as Ref } }) diff --git a/models/document/src/index.ts b/models/document/src/index.ts index 285f46bdd5..380a7efffd 100644 --- a/models/document/src/index.ts +++ b/models/document/src/index.ts @@ -553,6 +553,20 @@ export function createModel (builder: Builder): void { }, document.ids.ModulePermissionGroup ) + + builder.createDoc( + core.class.ModulePermissionGroup, + core.space.Model, + { + application: document.app.Documents, + role: AccountRole.ReadOnlyGuest, + permissions: [], + spaceClass: document.class.Teamspace, + enabled: false, + order: 40 + }, + document.ids.ModulePermissionGroupReadOnlyGuest + ) definePermissions(builder) builder.createDoc(core.class.DomainIndexConfiguration, core.space.Model, { diff --git a/models/document/src/plugin.ts b/models/document/src/plugin.ts index 71344870c2..97760535e6 100644 --- a/models/document/src/plugin.ts +++ b/models/document/src/plugin.ts @@ -62,7 +62,8 @@ export default mergeIds(documentId, document, { Other: '' as Ref }, ids: { - ModulePermissionGroup: '' as Ref + ModulePermissionGroup: '' as Ref, + ModulePermissionGroupReadOnlyGuest: '' as Ref }, string: { ConfigDescription: '' as IntlString, diff --git a/models/drive/src/index.ts b/models/drive/src/index.ts index c0a1e39922..35b23ed18d 100644 --- a/models/drive/src/index.ts +++ b/models/drive/src/index.ts @@ -855,5 +855,19 @@ export function createModel (builder: Builder): void { }, drive.ids.ModulePermissionGroup ) + + builder.createDoc( + core.class.ModulePermissionGroup, + core.space.Model, + { + application: drive.app.Drive, + role: AccountRole.ReadOnlyGuest, + permissions: [], + spaceClass: drive.class.Drive, + enabled: false, + order: 60 + }, + drive.ids.ModulePermissionGroupReadOnlyGuest + ) definePermissions(builder) } diff --git a/models/drive/src/plugin.ts b/models/drive/src/plugin.ts index aee47f4d9c..36e73ed91e 100644 --- a/models/drive/src/plugin.ts +++ b/models/drive/src/plugin.ts @@ -102,7 +102,8 @@ export default mergeIds(driveId, drive, { RestoreFileVersion: '' as ViewAction }, ids: { - ModulePermissionGroup: '' as Ref + ModulePermissionGroup: '' as Ref, + ModulePermissionGroupReadOnlyGuest: '' as Ref }, string: { Grid: '' as IntlString, diff --git a/models/love/src/index.ts b/models/love/src/index.ts index 0e67856e1d..343c2aa218 100644 --- a/models/love/src/index.ts +++ b/models/love/src/index.ts @@ -280,6 +280,20 @@ export function createModel (builder: Builder): void { love.ids.ModulePermissionGroup ) + builder.createDoc( + core.class.ModulePermissionGroup, + core.space.Model, + { + application: love.app.Love, + role: AccountRole.ReadOnlyGuest, + permissions: [], + spaceClass: love.class.Office, + enabled: false, + order: 50 + }, + love.ids.ModulePermissionGroupReadOnlyGuest + ) + builder.createDoc( workbench.class.Widget, core.space.Model, diff --git a/models/love/src/plugin.ts b/models/love/src/plugin.ts index 72acc0f5e4..63ee645f5f 100644 --- a/models/love/src/plugin.ts +++ b/models/love/src/plugin.ts @@ -51,7 +51,8 @@ export default mergeIds(loveId, love, { Settings: '' as Ref, LoveNotificationGroup: '' as Ref, MeetingMinutesChatNotification: '' as Ref, - ModulePermissionGroup: '' as Ref + ModulePermissionGroup: '' as Ref, + ModulePermissionGroupReadOnlyGuest: '' as Ref }, function: { MeetingMinutesTitleProvider: '' as Resource<(client: Client, ref: Ref, doc?: Doc) => Promise> diff --git a/models/test-management/src/index.ts b/models/test-management/src/index.ts index 3252a2fc2e..610e3b4798 100644 --- a/models/test-management/src/index.ts +++ b/models/test-management/src/index.ts @@ -216,6 +216,20 @@ export function createModel (builder: Builder): void { testManagement.ids.ModulePermissionGroup ) + builder.createDoc( + core.class.ModulePermissionGroup, + core.space.Model, + { + application: testManagement.app.TestManagement, + role: AccountRole.ReadOnlyGuest, + permissions: [], + spaceClass: testManagement.class.TestProject, + enabled: false, + order: 70 + }, + testManagement.ids.ModulePermissionGroupReadOnlyGuest + ) + builder.mixin(testManagement.class.TestCase, core.class.Class, view.mixin.ObjectIcon, { component: testManagement.component.TestCaseStatusPresenter }) diff --git a/models/test-management/src/plugin.ts b/models/test-management/src/plugin.ts index a5d21836c1..9445a77f07 100644 --- a/models/test-management/src/plugin.ts +++ b/models/test-management/src/plugin.ts @@ -50,6 +50,7 @@ export default mergeIds(testManagementId, testManganement, { RunTestPlanButton: '' as AnyComponent }, ids: { - ModulePermissionGroup: '' as Ref + ModulePermissionGroup: '' as Ref, + ModulePermissionGroupReadOnlyGuest: '' as Ref } }) diff --git a/models/tracker/src/index.ts b/models/tracker/src/index.ts index 54c2dedd55..44d1b97b50 100644 --- a/models/tracker/src/index.ts +++ b/models/tracker/src/index.ts @@ -682,6 +682,20 @@ export function createModel (builder: Builder): void { tracker.ids.ModulePermissionGroup ) + builder.createDoc( + core.class.ModulePermissionGroup, + core.space.Model, + { + application: tracker.app.Tracker, + role: AccountRole.ReadOnlyGuest, + permissions: [], + spaceClass: tracker.class.Project, + enabled: true, + order: 10 + }, + tracker.ids.ModulePermissionGroupReadOnlyGuest + ) + builder.createDoc( chunter.class.ChatMessageViewlet, core.space.Model, diff --git a/models/tracker/src/plugin.ts b/models/tracker/src/plugin.ts index cd9f7faa15..ac5d0e4601 100644 --- a/models/tracker/src/plugin.ts +++ b/models/tracker/src/plugin.ts @@ -82,6 +82,7 @@ export default mergeIds(trackerId, tracker, { BaseProjectType: '' as Ref, GuestIssueClassPermission: '' as Ref, ModulePermissionGroup: '' as Ref, + ModulePermissionGroupReadOnlyGuest: '' as Ref, IssueUpdatedActivityViewlet: '' as Ref, IssueCreatedActivityViewlet: '' as Ref, IssueRemovedActivityViewlet: '' as Ref, diff --git a/models/training/src/index.ts b/models/training/src/index.ts index 7c612d7ac9..1b531e8506 100644 --- a/models/training/src/index.ts +++ b/models/training/src/index.ts @@ -923,6 +923,20 @@ function defineSettings (builder: Builder): void { }, training.ids.ModulePermissionGroup ) + + builder.createDoc( + core.class.ModulePermissionGroup, + core.space.Model, + { + application: training.app.Training, + role: AccountRole.ReadOnlyGuest, + permissions: [], + spaceClass: core.class.TypedSpace, + enabled: false, + order: 25 + }, + training.ids.ModulePermissionGroupReadOnlyGuest + ) } const columns = { diff --git a/models/training/src/plugin.ts b/models/training/src/plugin.ts index 86071cd6a2..13a33b10a0 100644 --- a/models/training/src/plugin.ts +++ b/models/training/src/plugin.ts @@ -35,7 +35,8 @@ export default mergeIds(trainingId, training, { }, ids: { GuestTrainingAttemptClassPermission: '' as Ref, - ModulePermissionGroup: '' as Ref + ModulePermissionGroup: '' as Ref, + ModulePermissionGroupReadOnlyGuest: '' as Ref }, // TODO: Move function resources declarations to plugins/*-resources diff --git a/packages/ui/src/components/SwitcherBase.svelte b/packages/ui/src/components/SwitcherBase.svelte index 47b8c0bc5a..4a8d18b183 100644 --- a/packages/ui/src/components/SwitcherBase.svelte +++ b/packages/ui/src/components/SwitcherBase.svelte @@ -80,10 +80,11 @@ background-color: var(--global-accent-BackgroundColor); .icon { - color: var(--global-on-nuance-TextColor); + color: var(--global-on-accent-TextColor); } span { - color: var(--global-on-nuance-TextColor); + color: var(--global-on-accent-TextColor); + font-weight: 500; } } &:checked + .switcher-element.subtle { diff --git a/plugins/card/src/index.ts b/plugins/card/src/index.ts index 5184d80009..4c8b3924f6 100644 --- a/plugins/card/src/index.ts +++ b/plugins/card/src/index.ts @@ -226,7 +226,8 @@ const cardPlugin = plugin(cardId, { ids: { CardWidget: '' as Ref, GuestCardClassPermission: '' as Ref, - ModulePermissionGroup: '' as Ref + ModulePermissionGroup: '' as Ref, + ModulePermissionGroupReadOnlyGuest: '' as Ref }, component: { LabelsPresenter: '' as AnyComponent, diff --git a/plugins/setting-assets/lang/cs.json b/plugins/setting-assets/lang/cs.json index 9cd84e9c53..72f70c49a2 100644 --- a/plugins/setting-assets/lang/cs.json +++ b/plugins/setting-assets/lang/cs.json @@ -212,9 +212,12 @@ "OfficeDefaultSettings": "Výchozí nastavení pro jednací místnosti", "DefaultStartWithTranscription": "Povolit přepis v nových kancelářích", "DefaultStartWithRecording": "Povolit záznam v nových kancelářích", - "GuestPermissionsSettings": "Oprávnění hostů", - "GuestPermissionsModulePermissions": "Oprávnění modulů", - "GuestPermissionsModulePermissionsHint": "Vyberte, které moduly mohou hosté používat, a níže upravte oprávnění pro jednotlivé aplikace.", + "GuestPermissionsSettings": "Hosté", + "GuestPermissionsApplicationPermissions": "Oprávnění aplikací", + "GuestPermissionsApplicationPermissionsHint": "Vyberte, které aplikace mohou hosté používat, a níže upravte oprávnění pro jednotlivé aplikace.", + "GuestPermissionsTabGuest": "Host", + "GuestPermissionsTabAnonymousGuest": "Anonymní host", + "GuestPermissionsAnonymousApplicationHint": "Přístup k aplikacím pro anonymní (pouze pro čtení) hosty. Které aplikace uvidí, může záviset i na konfiguraci nasazení.", "ImportDocumentPermission": "Importovat dokumenty", "ImportDocumentDescription": "Umožňuje uživatelům importovat dokumenty do pracovního prostoru", "SelectUsers": "Vybrat uživatele", diff --git a/plugins/setting-assets/lang/de.json b/plugins/setting-assets/lang/de.json index 77cfe2c0ba..ed11ae789e 100644 --- a/plugins/setting-assets/lang/de.json +++ b/plugins/setting-assets/lang/de.json @@ -214,9 +214,12 @@ "OfficeDefaultSettings": "Standardeinstellungen für Besprechungsräume", "DefaultStartWithTranscription": "Transkription in neuen Büroräumen aktivieren", "DefaultStartWithRecording": "Aufnahme in neuen Büroräumen aktivieren", - "GuestPermissionsSettings": "Gastberechtigungen", - "GuestPermissionsModulePermissions": "Modulberechtigungen", - "GuestPermissionsModulePermissionsHint": "Wählen Sie, welche Module Gäste nutzen dürfen, und passen Sie unten die Berechtigungen für jede App an.", + "GuestPermissionsSettings": "Gäste", + "GuestPermissionsApplicationPermissions": "Anwendungsberechtigungen", + "GuestPermissionsApplicationPermissionsHint": "Wählen Sie, welche Anwendungen Gäste nutzen dürfen, und passen Sie unten die Berechtigungen für jede Anwendung an.", + "GuestPermissionsTabGuest": "Gast", + "GuestPermissionsTabAnonymousGuest": "Anonymer Gast", + "GuestPermissionsAnonymousApplicationHint": "Anwendungszugriff für anonyme (nur lesende) Gäste. Welche Anwendungen sie sehen, kann auch von der Bereitstellungskonfiguration abhängen.", "ImportDocumentPermission": "Dokumente importieren", "ImportDocumentDescription": "Gewährt Benutzern die Möglichkeit, Dokumente in den Arbeitsbereich zu importieren", "SelectUsers": "Benutzer auswählen", diff --git a/plugins/setting-assets/lang/en.json b/plugins/setting-assets/lang/en.json index 7ec7b53bea..aaaa1636e5 100644 --- a/plugins/setting-assets/lang/en.json +++ b/plugins/setting-assets/lang/en.json @@ -215,9 +215,12 @@ "OfficeDefaultSettings": "Default settings for meeting rooms", "DefaultStartWithTranscription": "Enable transcription in new office rooms", "DefaultStartWithRecording": "Enable recording in new office rooms", - "GuestPermissionsSettings": "Guest permissions", - "GuestPermissionsModulePermissions": "Module permissions", - "GuestPermissionsModulePermissionsHint": "Choose which modules guests can use, then adjust permissions for each app below.", + "GuestPermissionsSettings": "Guests", + "GuestPermissionsApplicationPermissions": "Application permissions", + "GuestPermissionsApplicationPermissionsHint": "Choose which applications guests can use, then adjust permissions for each application below.", + "GuestPermissionsTabGuest": "Guest", + "GuestPermissionsTabAnonymousGuest": "Anonymous guest", + "GuestPermissionsAnonymousApplicationHint": "Application access for anonymous (read-only) guests. Which applications they see can also depend on deployment configuration.", "ImportDocumentPermission": "Import documents", "ImportDocumentDescription": "Grants users ability to import documents into the workspace", "SelectUsers": "Select users", diff --git a/plugins/setting-assets/lang/es.json b/plugins/setting-assets/lang/es.json index de7d47925c..4256f7ee8c 100644 --- a/plugins/setting-assets/lang/es.json +++ b/plugins/setting-assets/lang/es.json @@ -205,9 +205,12 @@ "OfficeDefaultSettings": "Configuración predeterminada para salas de reuniones", "DefaultStartWithTranscription": "Habilitar transcripción en nuevas oficinas", "DefaultStartWithRecording": "Habilitar grabación en nuevas oficinas", - "GuestPermissionsSettings": "Permisos de invitados", - "GuestPermissionsModulePermissions": "Permisos de módulos", - "GuestPermissionsModulePermissionsHint": "Elija qué módulos pueden usar los invitados y luego ajuste los permisos de cada aplicación a continuación.", + "GuestPermissionsSettings": "Invitados", + "GuestPermissionsApplicationPermissions": "Permisos de aplicaciones", + "GuestPermissionsApplicationPermissionsHint": "Elija qué aplicaciones pueden usar los invitados y luego ajuste los permisos de cada aplicación a continuación.", + "GuestPermissionsTabGuest": "Invitado", + "GuestPermissionsTabAnonymousGuest": "Invitado anónimo", + "GuestPermissionsAnonymousApplicationHint": "Acceso a aplicaciones para invitados anónimos (solo lectura). Las aplicaciones que ven también pueden depender de la configuración de despliegue.", "ImportDocumentPermission": "Importar documentos", "ImportDocumentDescription": "Otorga a los usuarios la capacidad de importar documentos al espacio de trabajo", "SelectUsers": "Seleccionar usuarios", diff --git a/plugins/setting-assets/lang/fr.json b/plugins/setting-assets/lang/fr.json index 72f43b6b15..5c6037eac8 100644 --- a/plugins/setting-assets/lang/fr.json +++ b/plugins/setting-assets/lang/fr.json @@ -214,9 +214,12 @@ "OfficeDefaultSettings": "Paramètres par défaut pour les salles de réunion", "DefaultStartWithTranscription": "Activer la transcription dans les nouveaux bureaux", "DefaultStartWithRecording": "Activer l'enregistrement dans les nouveaux bureaux", - "GuestPermissionsSettings": "Permissions des invités", - "GuestPermissionsModulePermissions": "Permissions des modules", - "GuestPermissionsModulePermissionsHint": "Choisissez les modules accessibles aux invités, puis ajustez les permissions pour chaque application ci-dessous.", + "GuestPermissionsSettings": "Invités", + "GuestPermissionsApplicationPermissions": "Permissions des applications", + "GuestPermissionsApplicationPermissionsHint": "Choisissez les applications accessibles aux invités, puis ajustez les permissions pour chaque application ci-dessous.", + "GuestPermissionsTabGuest": "Invité", + "GuestPermissionsTabAnonymousGuest": "Invité anonyme", + "GuestPermissionsAnonymousApplicationHint": "Accès aux applications pour les invités anonymes (lecture seule). Les applications visibles peuvent aussi dépendre de la configuration de déploiement.", "ImportDocumentPermission": "Importer des documents", "ImportDocumentDescription": "Accorde aux utilisateurs la possibilité d'importer des documents dans l'espace de travail", "SelectUsers": "Sélectionner des utilisateurs", diff --git a/plugins/setting-assets/lang/it.json b/plugins/setting-assets/lang/it.json index 030ecb9e8c..bc21f048e4 100644 --- a/plugins/setting-assets/lang/it.json +++ b/plugins/setting-assets/lang/it.json @@ -214,9 +214,12 @@ "OfficeDefaultSettings": "Impostazioni predefinite per le sale riunioni", "DefaultStartWithTranscription": "Abilita trascrizione nelle nuove stanze dell'ufficio", "DefaultStartWithRecording": "Abilita registrazione nelle nuove stanze dell'ufficio", - "GuestPermissionsSettings": "Permessi ospite", - "GuestPermissionsModulePermissions": "Permessi dei moduli", - "GuestPermissionsModulePermissionsHint": "Scegli quali moduli possono usare gli ospiti, poi regola i permessi per ogni app qui sotto.", + "GuestPermissionsSettings": "Ospiti", + "GuestPermissionsApplicationPermissions": "Permessi delle applicazioni", + "GuestPermissionsApplicationPermissionsHint": "Scegli quali applicazioni possono usare gli ospiti, poi regola i permessi per ogni applicazione qui sotto.", + "GuestPermissionsTabGuest": "Ospite", + "GuestPermissionsTabAnonymousGuest": "Ospite anonimo", + "GuestPermissionsAnonymousApplicationHint": "Accesso alle applicazioni per ospiti anonimi (sola lettura). Le applicazioni visibili possono dipendere anche dalla configurazione di distribuzione.", "ImportDocumentPermission": "Importa documenti", "ImportDocumentDescription": "Concede agli utenti la possibilità di importare documenti nell'area di lavoro", "SelectUsers": "Seleziona utenti", diff --git a/plugins/setting-assets/lang/ja.json b/plugins/setting-assets/lang/ja.json index 471f3d444d..8889c80f14 100644 --- a/plugins/setting-assets/lang/ja.json +++ b/plugins/setting-assets/lang/ja.json @@ -214,9 +214,12 @@ "OfficeDefaultSettings": "会議室のデフォルト設定", "DefaultStartWithTranscription": "新しいオフィスルームで文字起こしを有効にする", "DefaultStartWithRecording": "新しいオフィスルームで録画を有効にする", - "GuestPermissionsSettings": "ゲストの権限", - "GuestPermissionsModulePermissions": "モジュールの権限", - "GuestPermissionsModulePermissionsHint": "ゲストが利用できるモジュールを選び、その下で各アプリの権限を調整します。", + "GuestPermissionsSettings": "ゲスト", + "GuestPermissionsApplicationPermissions": "アプリケーションの権限", + "GuestPermissionsApplicationPermissionsHint": "ゲストが利用できるアプリケーションを選び、その下で各アプリケーションの権限を調整します。", + "GuestPermissionsTabGuest": "ゲスト", + "GuestPermissionsTabAnonymousGuest": "匿名ゲスト", + "GuestPermissionsAnonymousApplicationHint": "匿名(読み取り専用)ゲストのアプリケーションアクセス。表示されるアプリケーションはデプロイ設定にも依存する場合があります。", "ImportDocumentPermission": "ドキュメントをインポート", "ImportDocumentDescription": "ユーザーにワークスペースにドキュメントをインポートする機能を付与します", "SelectUsers": "ユーザーを選択", diff --git a/plugins/setting-assets/lang/pt-br.json b/plugins/setting-assets/lang/pt-br.json index 1a061058bd..9de2c3bb13 100644 --- a/plugins/setting-assets/lang/pt-br.json +++ b/plugins/setting-assets/lang/pt-br.json @@ -205,9 +205,12 @@ "OfficeDefaultSettings": "Configurações padrão para salas de reunião", "DefaultStartWithTranscription": "Habilitar transcrição em novos escritórios", "DefaultStartWithRecording": "Habilitar gravação em novos escritórios", - "GuestPermissionsSettings": "Permissões de convidados", - "GuestPermissionsModulePermissions": "Permissões de módulos", - "GuestPermissionsModulePermissionsHint": "Escolha quais módulos os convidados podem usar e, em seguida, ajuste as permissões de cada aplicativo abaixo.", + "GuestPermissionsSettings": "Convidados", + "GuestPermissionsApplicationPermissions": "Permissões de aplicativos", + "GuestPermissionsApplicationPermissionsHint": "Escolha quais aplicativos os convidados podem usar e, em seguida, ajuste as permissões de cada aplicativo abaixo.", + "GuestPermissionsTabGuest": "Convidado", + "GuestPermissionsTabAnonymousGuest": "Convidado anônimo", + "GuestPermissionsAnonymousApplicationHint": "Acesso a aplicativos para convidados anônimos (somente leitura). Os aplicativos visíveis também podem depender da configuração de implantação.", "ImportDocumentPermission": "Importar documentos", "ImportDocumentDescription": "Concede aos usuários a capacidade de importar documentos para o espaço de trabalho", "SelectUsers": "Selecionar usuários", diff --git a/plugins/setting-assets/lang/pt.json b/plugins/setting-assets/lang/pt.json index a44599991b..eb2e327852 100644 --- a/plugins/setting-assets/lang/pt.json +++ b/plugins/setting-assets/lang/pt.json @@ -205,9 +205,12 @@ "OfficeDefaultSettings": "Configurações padrão para salas de reunião", "DefaultStartWithTranscription": "Habilitar transcrição em novos escritórios", "DefaultStartWithRecording": "Habilitar gravação em novos escritórios", - "GuestPermissionsSettings": "Permissões de convidados", - "GuestPermissionsModulePermissions": "Permissões de módulos", - "GuestPermissionsModulePermissionsHint": "Escolha quais módulos os convidados podem usar e, em seguida, ajuste as permissões de cada aplicação abaixo.", + "GuestPermissionsSettings": "Convidados", + "GuestPermissionsApplicationPermissions": "Permissões de aplicações", + "GuestPermissionsApplicationPermissionsHint": "Escolha quais aplicações os convidados podem usar e, em seguida, ajuste as permissões de cada aplicação abaixo.", + "GuestPermissionsTabGuest": "Convidado", + "GuestPermissionsTabAnonymousGuest": "Convidado anónimo", + "GuestPermissionsAnonymousApplicationHint": "Acesso a aplicações para convidados anónimos (só leitura). As aplicações visíveis também podem depender da configuração de implementação.", "ImportDocumentPermission": "Importar documentos", "ImportDocumentDescription": "Concede aos usuários a capacidade de importar documentos para o espaço de trabalho", "SelectUsers": "Selecionar usuários", diff --git a/plugins/setting-assets/lang/ru.json b/plugins/setting-assets/lang/ru.json index 7c61a771c5..513d69b2b2 100644 --- a/plugins/setting-assets/lang/ru.json +++ b/plugins/setting-assets/lang/ru.json @@ -215,9 +215,12 @@ "OfficeDefaultSettings": "Настройки по умолчанию для переговорных", "DefaultStartWithTranscription": "Включить транскрипцию в новых комнатах", "DefaultStartWithRecording": "Включить запись в новых комнатах", - "GuestPermissionsSettings": "Права гостей", - "GuestPermissionsModulePermissions": "Права модулей", - "GuestPermissionsModulePermissionsHint": "Выберите, какие модули доступны гостям, затем настройте права для каждого приложения ниже.", + "GuestPermissionsSettings": "Гости", + "GuestPermissionsApplicationPermissions": "Права приложений", + "GuestPermissionsApplicationPermissionsHint": "Выберите, какие приложения доступны гостям, затем настройте права для каждого приложения ниже.", + "GuestPermissionsTabGuest": "Гость", + "GuestPermissionsTabAnonymousGuest": "Анонимный гость", + "GuestPermissionsAnonymousApplicationHint": "Доступ к приложениям для анонимных гостей (только чтение). Видимые приложения также могут зависеть от конфигурации развёртывания.", "ImportDocumentPermission": "Импорт документов", "ImportDocumentDescription": "Предоставляет пользователям возможность импортировать документы в рабочее пространство", "SelectUsers": "Выбрать пользователей", diff --git a/plugins/setting-assets/lang/tr.json b/plugins/setting-assets/lang/tr.json index a14577706d..8057899a51 100644 --- a/plugins/setting-assets/lang/tr.json +++ b/plugins/setting-assets/lang/tr.json @@ -214,9 +214,12 @@ "OfficeDefaultSettings": "Toplantı odaları için varsayılan ayarlar", "DefaultStartWithTranscription": "Yeni ofis odalarında transkripsiyonu etkinleştir", "DefaultStartWithRecording": "Yeni ofis odalarında kaydı etkinleştir", - "GuestPermissionsSettings": "Misafir izinleri", - "GuestPermissionsModulePermissions": "Modül izinleri", - "GuestPermissionsModulePermissionsHint": "Misafirlerin hangi modülleri kullanabileceğini seçin, ardından her uygulama için izinleri aşağıdan ayarlayın.", + "GuestPermissionsSettings": "Misafirler", + "GuestPermissionsApplicationPermissions": "Uygulama izinleri", + "GuestPermissionsApplicationPermissionsHint": "Misafirlerin hangi uygulamaları kullanabileceğini seçin, ardından her uygulama için izinleri aşağıdan ayarlayın.", + "GuestPermissionsTabGuest": "Misafir", + "GuestPermissionsTabAnonymousGuest": "Anonim misafir", + "GuestPermissionsAnonymousApplicationHint": "Anonim (salt okunur) misafirler için uygulama erişimi. Gördükleri uygulamalar da dağıtım yapılandırmasına bağlı olabilir.", "ImportDocumentPermission": "Belgeleri içe aktar", "ImportDocumentDescription": "Kullanıcılara çalışma alanına belge içe aktarma yeteneği verir", "SelectUsers": "Kullanıcıları seç", diff --git a/plugins/setting-assets/lang/zh.json b/plugins/setting-assets/lang/zh.json index d55a63ba8b..a30f894b4c 100644 --- a/plugins/setting-assets/lang/zh.json +++ b/plugins/setting-assets/lang/zh.json @@ -214,9 +214,12 @@ "OfficeDefaultSettings": "会议室的默认设置", "DefaultStartWithTranscription": "在新办公室启用转录", "DefaultStartWithRecording": "在新办公室启用录制", - "GuestPermissionsSettings": "访客权限", - "GuestPermissionsModulePermissions": "模块权限", - "GuestPermissionsModulePermissionsHint": "选择访客可以使用哪些模块,然后在下方调整每个应用的权限。", + "GuestPermissionsSettings": "访客", + "GuestPermissionsApplicationPermissions": "应用权限", + "GuestPermissionsApplicationPermissionsHint": "选择访客可以使用哪些应用,然后在下方调整每个应用的权限。", + "GuestPermissionsTabGuest": "访客", + "GuestPermissionsTabAnonymousGuest": "匿名访客", + "GuestPermissionsAnonymousApplicationHint": "匿名(只读)访客的应用访问。他们可见的应用也可能取决于部署配置。", "ImportDocumentPermission": "导入文档", "ImportDocumentDescription": "授予用户将文档导入工作区的权限", "SelectUsers": "选择用户", diff --git a/plugins/setting-resources/src/components/General.svelte b/plugins/setting-resources/src/components/General.svelte index b88a6118e1..9f1e4bc367 100644 --- a/plugins/setting-resources/src/components/General.svelte +++ b/plugins/setting-resources/src/components/General.svelte @@ -13,30 +13,16 @@ // limitations under the License. -->
-
- {#if loading} -
- -
- {:else} - -
-
-
-
-
-
-
-
+
+ -
- {#each sortedVisibleModuleGroups as group} - {@const app = getApplication(group.application)} - {@const moduleOn = isModuleEnabled(group)} - {@const permissionCount = (group.permissions ?? []).length} -
-
-
- {#if app} -
- -
- {:else} -
- {/if} -
-
-
-
-
- {/if} + + {/if} + +
+
+
+
+
+ {#if guestPermissionsTab === 'anonymous'} +
+
+ +
+ {#each sortedVisibleModuleGroups as group} + {@const app = getApplication(group.application)} + {@const moduleOn = isModuleEnabled(group)} + {@const permissionCount = (group.permissions ?? []).length} +
+
+
+ {#if app} +
+ +
+ {:else} +
+ {/if} +
+
+
+
+
+
+ +
+
+ + {#if permissionCount > 0} +
+ {#each group.permissions ?? [] as permissionId} +
+
+
+
+ +
+
+ {/each} +
+ {/if} +
+ {/each} + {#if visibleModuleGroups.length === 0} +
+ {/if} +
+
+
+ + {/if} +