From 7eb795f9b85826940c49a3fb27e005e61a8fbf3c Mon Sep 17 00:00:00 2001 From: Denis Bykhov Date: Tue, 14 May 2024 21:06:57 +0500 Subject: [PATCH] Fix guest settings (#5597) Signed-off-by: Denis Bykhov --- models/notification/src/index.ts | 3 +- models/setting/src/index.ts | 30 +++++++------- models/templates/src/index.ts | 4 +- models/tracker/src/index.ts | 2 +- plugins/lead-resources/package.json | 1 + .../src/components/CreateFunnel.svelte | 11 ++--- .../src/components/Profile.svelte | 6 +-- .../src/components/Settings.svelte | 14 ++++--- .../src/components/WorkspaceSettings.svelte | 2 +- plugins/setting/src/index.ts | 4 +- plugins/workbench-resources/package.json | 1 + .../src/components/AccountPopup.svelte | 40 +++++++------------ .../src/components/AppSwitcher.svelte | 10 +++-- .../src/components/Workbench.svelte | 27 ++----------- server/account/lang/en.json | 2 +- server/account/lang/es.json | 2 +- server/account/lang/pt.json | 2 +- server/account/lang/ru.json | 2 +- 18 files changed, 68 insertions(+), 95 deletions(-) diff --git a/models/notification/src/index.ts b/models/notification/src/index.ts index bf46c218ff..469ec9f1ff 100644 --- a/models/notification/src/index.ts +++ b/models/notification/src/index.ts @@ -17,6 +17,7 @@ import activity, { type ActivityMessage } from '@hcengineering/activity' import chunter from '@hcengineering/chunter' import { + AccountRole, DOMAIN_MODEL, IndexKind, type Account, @@ -390,7 +391,7 @@ export function createModel (builder: Builder): void { icon: notification.icon.Notifications, component: notification.component.NotificationSettings, group: 'settings-account', - secured: false, + role: AccountRole.Guest, order: 1500 }, notification.ids.NotificationSettings diff --git a/models/setting/src/index.ts b/models/setting/src/index.ts index bdcb8c98d2..ae280fc866 100644 --- a/models/setting/src/index.ts +++ b/models/setting/src/index.ts @@ -15,7 +15,7 @@ import activity from '@hcengineering/activity' import contact from '@hcengineering/contact' -import { DOMAIN_MODEL, type Account, type Domain, type Ref } from '@hcengineering/core' +import { AccountRole, DOMAIN_MODEL, type Account, type Domain, type Ref } from '@hcengineering/core' import { Mixin, Model, type Builder, UX } from '@hcengineering/model' import core, { TClass, TConfiguration, TDoc } from '@hcengineering/model-core' import view, { createAction } from '@hcengineering/model-view' @@ -62,7 +62,7 @@ export class TSettingsCategory extends TDoc implements SettingsCategory { label!: IntlString icon!: Asset component!: AnyComponent - secured!: boolean + role!: AccountRole adminOnly?: boolean } @@ -72,7 +72,7 @@ export class TWorkspaceSettingCategory extends TDoc implements SettingsCategory label!: IntlString icon!: Asset component!: AnyComponent - secured!: boolean + role!: AccountRole } @Model(setting.class.IntegrationType, core.class.Doc, DOMAIN_MODEL) @@ -150,7 +150,7 @@ export function createModel (builder: Builder): void { icon: setting.icon.AccountSettings, component: setting.component.Profile, group: 'settings-account', - secured: false, + role: AccountRole.Guest, order: 0 }, setting.ids.Profile @@ -165,7 +165,7 @@ export function createModel (builder: Builder): void { icon: setting.icon.Password, component: setting.component.Password, group: 'settings-account', - secured: false, + role: AccountRole.Guest, order: 1000 }, setting.ids.Password @@ -182,7 +182,7 @@ export function createModel (builder: Builder): void { navigation: setting.component.WorkspaceSettings }, group: 'settings', - secured: false, + role: AccountRole.User, order: 2000 }, setting.ids.Setting @@ -196,7 +196,7 @@ export function createModel (builder: Builder): void { icon: setting.icon.Integrations, component: setting.component.Integrations, group: 'settings-account', - secured: false, + role: AccountRole.User, order: 1500 }, setting.ids.Integrations @@ -210,7 +210,7 @@ export function createModel (builder: Builder): void { icon: setting.icon.Owners, component: setting.component.Owners, order: 1000, - secured: true + role: AccountRole.Maintainer }, setting.ids.Owners ) @@ -223,7 +223,7 @@ export function createModel (builder: Builder): void { icon: setting.icon.Views, component: setting.component.Spaces, order: 1100, - secured: true + role: AccountRole.Maintainer }, setting.ids.Spaces ) @@ -236,7 +236,7 @@ export function createModel (builder: Builder): void { icon: setting.icon.Setting, component: setting.component.Configure, order: 1200, - secured: true, + role: AccountRole.Owner, adminOnly: true }, setting.ids.Configure @@ -250,7 +250,7 @@ export function createModel (builder: Builder): void { icon: setting.icon.AccountSettings, component: setting.component.WorkspaceSetting, order: 1300, - secured: true + role: AccountRole.Owner }, setting.ids.WorkspaceSetting ) @@ -263,7 +263,7 @@ export function createModel (builder: Builder): void { icon: setting.icon.Clazz, component: setting.component.ClassSetting, group: 'settings-editor', - secured: false, + role: AccountRole.Maintainer, order: 4500 }, setting.ids.ClassSetting @@ -277,7 +277,7 @@ export function createModel (builder: Builder): void { icon: setting.icon.Enums, component: setting.component.EnumSetting, group: 'settings-editor', - secured: false, + role: AccountRole.User, order: 4600, expandable: true }, @@ -292,7 +292,7 @@ export function createModel (builder: Builder): void { icon: setting.icon.InviteSettings, component: setting.component.InviteSetting, group: 'settings-editor', - secured: true, + role: AccountRole.Maintainer, order: 4700 }, setting.ids.InviteSettings @@ -603,7 +603,7 @@ export function createModel (builder: Builder): void { tools: setting.component.ManageSpaceTypesTools }, group: 'settings-editor', - secured: false, + role: AccountRole.User, order: 6000, expandable: true }, diff --git a/models/templates/src/index.ts b/models/templates/src/index.ts index 51b3f6bf86..36ade62388 100644 --- a/models/templates/src/index.ts +++ b/models/templates/src/index.ts @@ -14,7 +14,7 @@ // limitations under the License. // -import { type Domain, DOMAIN_MODEL, IndexKind, type Ref, type Markup } from '@hcengineering/core' +import { type Domain, DOMAIN_MODEL, IndexKind, type Ref, type Markup, AccountRole } from '@hcengineering/core' import { type Builder, Index, Model, Prop, TypeString, UX, TypeMarkup } from '@hcengineering/model' import core, { TDoc, TSpace } from '@hcengineering/model-core' import textEditor from '@hcengineering/model-text-editor' @@ -76,7 +76,7 @@ export function createModel (builder: Builder): void { icon: templates.icon.Templates, component: templates.component.Templates, group: 'settings-editor', - secured: false, + role: AccountRole.User, order: 3500 }, templates.ids.Templates diff --git a/models/tracker/src/index.ts b/models/tracker/src/index.ts index e5a798cb11..32ee89ae48 100644 --- a/models/tracker/src/index.ts +++ b/models/tracker/src/index.ts @@ -635,7 +635,7 @@ export function createModel (builder: Builder): void { icon: tracker.icon.Relations, component: tracker.component.SettingsRelatedTargets, group: 'settings-editor', - secured: false, + role: AccountRole.Maintainer, order: 4000 }) diff --git a/plugins/lead-resources/package.json b/plugins/lead-resources/package.json index 4aa737214f..192dec8083 100644 --- a/plugins/lead-resources/package.json +++ b/plugins/lead-resources/package.json @@ -7,6 +7,7 @@ "scripts": { "build": "compile ui", "build:docs": "api-extractor run --local", + "svelte-check": "do-svelte-check", "format": "format src", "build:watch": "compile ui", "_phase:build": "compile ui", diff --git a/plugins/lead-resources/src/components/CreateFunnel.svelte b/plugins/lead-resources/src/components/CreateFunnel.svelte index 1a35e51ca3..bff311cc97 100644 --- a/plugins/lead-resources/src/components/CreateFunnel.svelte +++ b/plugins/lead-resources/src/components/CreateFunnel.svelte @@ -14,7 +14,6 @@ // limitations under the License. --> import { createEventDispatcher, onDestroy } from 'svelte' import contact, { Employee, PersonAccount, combineName, getFirstName, getLastName } from '@hcengineering/contact' - import { ChannelsEditor, EditableAvatar, employeeByIdStore } from '@hcengineering/contact-resources' + import { ChannelsEditor, EditableAvatar, employeeByIdStore, personByIdStore } from '@hcengineering/contact-resources' import { Ref, getCurrentAccount } from '@hcengineering/core' import login from '@hcengineering/login' import { getResource } from '@hcengineering/platform' @@ -32,12 +32,12 @@ let avatarEditor: EditableAvatar const account = getCurrentAccount() as PersonAccount - const employee = account !== undefined ? $employeeByIdStore.get(account.person as Ref) : undefined + const employee = account !== undefined ? $personByIdStore.get(account.person) : undefined let firstName = employee ? getFirstName(employee.name) : '' let lastName = employee ? getLastName(employee.name) : '' onDestroy( - employeeByIdStore.subscribe((p) => { + personByIdStore.subscribe((p) => { const emp = p.get(account.person as Ref) if (emp !== undefined) { firstName = getFirstName(emp.name) diff --git a/plugins/setting-resources/src/components/Settings.svelte b/plugins/setting-resources/src/components/Settings.svelte index 5cf9dbf7ca..ee030efd50 100644 --- a/plugins/setting-resources/src/components/Settings.svelte +++ b/plugins/setting-resources/src/components/Settings.svelte @@ -57,7 +57,7 @@ setting.class.SettingsCategory, {}, (res) => { - categories = hasAccountRole(account, AccountRole.Maintainer) ? res : res.filter((p) => !p.secured) + categories = res.filter((p) => hasAccountRole(account, p.role)) category = findCategory(categoryId) }, { sort: { order: 1 } } @@ -167,11 +167,13 @@ label={setting.string.SelectWorkspace} on:click={selectWorkspace} /> - + {#if hasAccountRole(account, AccountRole.User)} + + {/if} diff --git a/plugins/setting-resources/src/components/WorkspaceSettings.svelte b/plugins/setting-resources/src/components/WorkspaceSettings.svelte index 6431a7fe69..a975d2aaae 100644 --- a/plugins/setting-resources/src/components/WorkspaceSettings.svelte +++ b/plugins/setting-resources/src/components/WorkspaceSettings.svelte @@ -45,7 +45,7 @@ setting.class.WorkspaceSettingCategory, {}, (res) => { - categories = hasAccountRole(account, AccountRole.Maintainer) ? res : res.filter((p) => !p.secured) + categories = res.filter((p) => hasAccountRole(account, p.role)) if (!admin) { categories = categories.filter((p) => !(p.adminOnly ?? false)) } diff --git a/plugins/setting/src/index.ts b/plugins/setting/src/index.ts index 9aaa86bbdc..4b4531b5ef 100644 --- a/plugins/setting/src/index.ts +++ b/plugins/setting/src/index.ts @@ -13,7 +13,7 @@ // limitations under the License. // -import type { Account, Class, Configuration, Doc, Mixin, Ref, Space } from '@hcengineering/core' +import type { Account, AccountRole, Class, Configuration, Doc, Mixin, Ref, Space } from '@hcengineering/core' import type { Plugin } from '@hcengineering/platform' import { Asset, IntlString, plugin, Resource } from '@hcengineering/platform' import { AnyComponent } from '@hcengineering/ui' @@ -87,7 +87,7 @@ export interface SettingsCategory extends Doc { // If defined, will sort using order. order?: number - secured: boolean + role: AccountRole expandable?: boolean adminOnly?: boolean diff --git a/plugins/workbench-resources/package.json b/plugins/workbench-resources/package.json index 91016f24fa..ce33f109f9 100644 --- a/plugins/workbench-resources/package.json +++ b/plugins/workbench-resources/package.json @@ -50,6 +50,7 @@ "@hcengineering/request": "^0.6.6", "@hcengineering/notification": "^0.6.16", "@hcengineering/notification-resources": "^0.6.0", + "@hcengineering/contact-resources": "^0.6.0", "@hcengineering/preference": "^0.6.9", "@hcengineering/contact": "^0.6.20", "@hcengineering/support": "^0.6.1", diff --git a/plugins/workbench-resources/src/components/AccountPopup.svelte b/plugins/workbench-resources/src/components/AccountPopup.svelte index 9e3ae5fe13..3611639055 100644 --- a/plugins/workbench-resources/src/components/AccountPopup.svelte +++ b/plugins/workbench-resources/src/components/AccountPopup.svelte @@ -13,8 +13,9 @@ // limitations under the License. --> @@ -74,7 +78,7 @@
{#if loaded} - {#each apps as app, i} + {#each filteredApps as app, i}