From 246b0abb13af1237fadb5908cfe79fcbafe0520b Mon Sep 17 00:00:00 2001 From: Denis Bykhov <80476319+BykhovDenis@users.noreply.github.com> Date: Wed, 12 Jan 2022 15:03:12 +0600 Subject: [PATCH] Create workspace docker compose fix (#800) Signed-off-by: Denis Bykhov <80476319+BykhovDenis@users.noreply.github.com> --- dev/docker-compose.yaml | 3 ++- .../src/components/CreateWorkspaceForm.svelte | 2 +- plugins/login-resources/src/utils.ts | 22 +++++++++++++++++++ pods/account/kube/deployment.yml | 2 +- pods/account/src/index.ts | 7 ++++-- server/account/src/index.ts | 19 +++++++++++++--- server/front/kube/front.yml | 4 +++- 7 files changed, 50 insertions(+), 9 deletions(-) diff --git a/dev/docker-compose.yaml b/dev/docker-compose.yaml index 349aa0c1f5..d9f2fa5c5f 100644 --- a/dev/docker-compose.yaml +++ b/dev/docker-compose.yaml @@ -48,7 +48,8 @@ services: - 3000:3000 environment: - MONGO_URL=mongodb://mongodb:27017 - - TRANSACTOR_URL=ws://localhost:3333 + - TRANSACTOR_URL=ws://transactor:3333 + - ENDPOINT_URL=ws://localhost:3333 - MINIO_ENDPOINT=minio - MINIO_ACCESS_KEY=minioadmin - MINIO_SECRET_KEY=minioadmin diff --git a/plugins/login-resources/src/components/CreateWorkspaceForm.svelte b/plugins/login-resources/src/components/CreateWorkspaceForm.svelte index 7e8a8c1ffe..36c003415d 100644 --- a/plugins/login-resources/src/components/CreateWorkspaceForm.svelte +++ b/plugins/login-resources/src/components/CreateWorkspaceForm.svelte @@ -23,7 +23,7 @@ import workbench from '@anticrm/workbench' import InviteLink from './InviteLink.svelte' - const fields = [{ name: 'workspace', i18n: login.string.Workspace, rule: /^\S+$/ }] + const fields = [{ name: 'workspace', i18n: login.string.Workspace, rule: /^[0-9a-z#%&^\-@!\()]{3,63}$/ }] const object = { workspace: '' diff --git a/plugins/login-resources/src/utils.ts b/plugins/login-resources/src/utils.ts index afc23b1f1d..98390220e9 100644 --- a/plugins/login-resources/src/utils.ts +++ b/plugins/login-resources/src/utils.ts @@ -159,6 +159,19 @@ export async function getWorkspaces (): Promise { throw new Error('accounts url not specified') } + const overrideToken = getMetadata(login.metadata.OverrideLoginToken) + if (overrideToken !== undefined) { + const endpoint = getMetadata(login.metadata.OverrideEndpoint) + if (endpoint !== undefined) { + return [{ + _id: '' as any, + workspace: 'DEV WORKSPACE', + organisation: '', + accounts: [] + }] + } + } + const token = fetchMetadataLocalStorage(login.metadata.LoginToken) if (token === null) { const loc = getCurrentLocation() @@ -197,6 +210,15 @@ export async function selectWorkspace (workspace: string): Promise<[Status, Logi throw new Error('accounts url not specified') } + const overrideToken = getMetadata(login.metadata.OverrideLoginToken) + const email = getMetadata(login.metadata.LoginEmail) ?? '' + if (overrideToken !== undefined) { + const endpoint = getMetadata(login.metadata.OverrideEndpoint) + if (endpoint !== undefined) { + return [OK, { token: overrideToken, endpoint, email }] + } + } + const token = fetchMetadataLocalStorage(login.metadata.LoginToken) if (token === null) { const loc = getCurrentLocation() diff --git a/pods/account/kube/deployment.yml b/pods/account/kube/deployment.yml index 5ed8536c44..83dace4687 100644 --- a/pods/account/kube/deployment.yml +++ b/pods/account/kube/deployment.yml @@ -25,7 +25,7 @@ spec: name: mongodb key: url - name: TRANSACTOR_URL - value: ws://transactor/ + value: wss://transactor.hc.engineering/ - name: MINIO_ENDPOINT valueFrom: secretKeyRef: diff --git a/pods/account/src/index.ts b/pods/account/src/index.ts index fda029efbb..3f96e82ec6 100644 --- a/pods/account/src/index.ts +++ b/pods/account/src/index.ts @@ -30,12 +30,15 @@ if (dbUri === undefined) { } const transactorUri = process.env.TRANSACTOR_URL -if (dbUri === undefined) { +if (transactorUri === undefined) { console.log('Please provide transactor url') process.exit(1) } -setMetadata(accountPlugin.metadata.Endpoint, transactorUri) +const endpointUri = process.env.ENDPOINT_URL ?? transactorUri + +setMetadata(accountPlugin.metadata.Endpoint, endpointUri) +setMetadata(accountPlugin.metadata.Transactor, transactorUri) let client: MongoClient diff --git a/server/account/src/index.ts b/server/account/src/index.ts index a67ce01755..88e34e52d2 100644 --- a/server/account/src/index.ts +++ b/server/account/src/index.ts @@ -53,6 +53,7 @@ export const accountId = 'account' as Plugin const accountPlugin = plugin(accountId, { metadata: { Endpoint: '' as Metadata, + Transactor: '' as Metadata, Secret: '' as Metadata }, status: { @@ -69,7 +70,19 @@ const getSecret = (): string => { } const getEndpoint = (): string => { - return getMetadata(accountPlugin.metadata.Endpoint) ?? 'wss://transactor.hc.engineering/' + const endpoint = getMetadata(accountPlugin.metadata.Endpoint) + if (endpoint === undefined) { + throw new Error('Please provide transactor endpoint url') + } + return endpoint +} + +const getTransactor = (): string => { + const transactor = getMetadata(accountPlugin.metadata.Transactor) + if (transactor === undefined) { + throw new Error('Please provide transactor url') + } + return transactor } /** @@ -297,7 +310,7 @@ export async function createWorkspace (db: Db, workspace: string, organisation: organisation }) .then((e) => e.insertedId.toHexString()) - await initWorkspace(getEndpoint(), workspace) + await initWorkspace(getTransactor(), workspace) return result } @@ -378,7 +391,7 @@ export async function assignWorkspace (db: Db, email: string, workspace: string) } async function createEmployeeAccount (account: Account, workspace: string): Promise { - const connection = await connect(getEndpoint(), workspace, account.email) + const connection = await connect(getTransactor(), workspace, account.email) try { const ops = new TxOperations(connection, core.account.System) diff --git a/server/front/kube/front.yml b/server/front/kube/front.yml index 212767d173..04379efb64 100644 --- a/server/front/kube/front.yml +++ b/server/front/kube/front.yml @@ -25,7 +25,9 @@ spec: - name: UPLOAD_URL value: /files - name: TRANSACTOR_URL - value: ws://transactor/ + value: wss://transactor.hc.engineering/ + - name: GMAIL_URL + value: gmail.hc.engineering - name: ELASTIC_URL valueFrom: secretKeyRef: