chore: remove connectToCloud option (#30430)

pull/30319/head^2
Guilherme Gazzo 3 years ago committed by GitHub
parent c15b1b7474
commit 027b01134c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      apps/meteor/app/cloud/server/functions/checkUserHasCloudLogin.ts
  2. 7
      apps/meteor/app/cloud/server/functions/connectWorkspace.ts
  3. 17
      apps/meteor/app/cloud/server/functions/disconnectWorkspace.ts
  4. 4
      apps/meteor/app/cloud/server/functions/getUserCloudAccessToken.ts
  5. 4
      apps/meteor/app/cloud/server/functions/getWorkspaceAccessToken.ts
  6. 4
      apps/meteor/app/cloud/server/functions/getWorkspaceAccessTokenWithScope.ts
  7. 4
      apps/meteor/app/cloud/server/functions/getWorkspaceKey.ts
  8. 2
      apps/meteor/app/cloud/server/functions/retrieveRegistrationStatus.ts
  9. 4
      apps/meteor/app/cloud/server/functions/startRegisterWorkspace.ts
  10. 6
      apps/meteor/app/cloud/server/functions/syncWorkspace.ts
  11. 4
      apps/meteor/app/cloud/server/functions/userLogout.ts
  12. 18
      apps/meteor/app/cloud/server/methods.ts
  13. 4
      apps/meteor/client/startup/startup.ts
  14. 30
      apps/meteor/client/views/admin/cloud/RegisterWorkspace.tsx
  15. 9
      apps/meteor/client/views/admin/cloud/components/RegisterWorkspaceMenu.tsx
  16. 79
      apps/meteor/client/views/admin/cloud/modals/DisconnectWorkspaceModal.tsx
  17. 11
      apps/meteor/client/views/admin/cloud/modals/RegisteredWorkspaceModal.tsx
  18. 1
      packages/core-typings/src/ICloud.ts

@ -3,9 +3,9 @@ import { Users } from '@rocket.chat/models';
import { retrieveRegistrationStatus } from './retrieveRegistrationStatus';
export async function checkUserHasCloudLogin(userId: string) {
const { connectToCloud, workspaceRegistered } = await retrieveRegistrationStatus();
const { workspaceRegistered } = await retrieveRegistrationStatus();
if (!connectToCloud || !workspaceRegistered) {
if (!workspaceRegistered) {
return false;
}

@ -1,18 +1,11 @@
import { Settings } from '@rocket.chat/models';
import { serverFetch as fetch } from '@rocket.chat/server-fetch';
import { SystemLogger } from '../../../../server/lib/logger/system';
import { settings } from '../../../settings/server';
import { getRedirectUri } from './getRedirectUri';
import { retrieveRegistrationStatus } from './retrieveRegistrationStatus';
import { saveRegistrationData } from './saveRegistrationData';
export async function connectWorkspace(token: string) {
const { connectToCloud } = await retrieveRegistrationStatus();
if (!connectToCloud) {
await Settings.updateValueById('Register_Server', true);
}
// shouldn't get here due to checking this on the method
// but this is just to double check
if (!token) {

@ -1,17 +0,0 @@
import { Settings } from '@rocket.chat/models';
import { retrieveRegistrationStatus } from './retrieveRegistrationStatus';
import { syncWorkspace } from './syncWorkspace';
export async function disconnectWorkspace() {
const { connectToCloud } = await retrieveRegistrationStatus();
if (!connectToCloud) {
return true;
}
await Settings.updateValueById('Register_Server', false);
await syncWorkspace(true);
return true;
}

@ -11,9 +11,9 @@ import { retrieveRegistrationStatus } from './retrieveRegistrationStatus';
import { userLoggedOut } from './userLoggedOut';
export async function getUserCloudAccessToken(userId: string, forceNew = false, scope = '', save = true) {
const { connectToCloud, workspaceRegistered } = await retrieveRegistrationStatus();
const { workspaceRegistered } = await retrieveRegistrationStatus();
if (!connectToCloud || !workspaceRegistered) {
if (!workspaceRegistered) {
return '';
}

@ -11,9 +11,9 @@ import { retrieveRegistrationStatus } from './retrieveRegistrationStatus';
* @returns string
*/
export async function getWorkspaceAccessToken(forceNew = false, scope = '', save = true) {
const { connectToCloud, workspaceRegistered } = await retrieveRegistrationStatus();
const { workspaceRegistered } = await retrieveRegistrationStatus();
if (!connectToCloud || !workspaceRegistered) {
if (!workspaceRegistered) {
return '';
}

@ -8,11 +8,11 @@ import { removeWorkspaceRegistrationInfo } from './removeWorkspaceRegistrationIn
import { retrieveRegistrationStatus } from './retrieveRegistrationStatus';
export async function getWorkspaceAccessTokenWithScope(scope = '') {
const { connectToCloud, workspaceRegistered } = await retrieveRegistrationStatus();
const { workspaceRegistered } = await retrieveRegistrationStatus();
const tokenResponse = { token: '', expiresAt: new Date() };
if (!connectToCloud || !workspaceRegistered) {
if (!workspaceRegistered) {
return tokenResponse;
}

@ -2,9 +2,9 @@ import { settings } from '../../../settings/server';
import { retrieveRegistrationStatus } from './retrieveRegistrationStatus';
export async function getWorkspaceKey() {
const { connectToCloud, workspaceRegistered } = await retrieveRegistrationStatus();
const { workspaceRegistered } = await retrieveRegistrationStatus();
if (!connectToCloud || !workspaceRegistered) {
if (!workspaceRegistered) {
return false;
}

@ -3,7 +3,6 @@ import { Users } from '@rocket.chat/models';
import { settings } from '../../../settings/server';
export async function retrieveRegistrationStatus(): Promise<{
connectToCloud: boolean;
workspaceRegistered: boolean;
workspaceId: string;
uniqueId: string;
@ -11,7 +10,6 @@ export async function retrieveRegistrationStatus(): Promise<{
email: string;
}> {
const info = {
connectToCloud: settings.get<boolean>('Register_Server'),
workspaceRegistered: !!settings.get('Cloud_Workspace_Client_Id') && !!settings.get('Cloud_Workspace_Client_Secret'),
workspaceId: settings.get<string>('Cloud_Workspace_Id'),
uniqueId: settings.get<string>('uniqueID'),

@ -8,8 +8,8 @@ import { retrieveRegistrationStatus } from './retrieveRegistrationStatus';
import { syncWorkspace } from './syncWorkspace';
export async function startRegisterWorkspace(resend = false) {
const { workspaceRegistered, connectToCloud } = await retrieveRegistrationStatus();
if ((workspaceRegistered && connectToCloud) || process.env.TEST_MODE) {
const { workspaceRegistered } = await retrieveRegistrationStatus();
if (workspaceRegistered || process.env.TEST_MODE) {
await syncWorkspace(true);
return true;

@ -10,9 +10,9 @@ import { getWorkspaceAccessToken } from './getWorkspaceAccessToken';
import { getWorkspaceLicense } from './getWorkspaceLicense';
import { retrieveRegistrationStatus } from './retrieveRegistrationStatus';
export async function syncWorkspace(reconnectCheck = false) {
const { workspaceRegistered, connectToCloud } = await retrieveRegistrationStatus();
if (!workspaceRegistered || (!connectToCloud && !reconnectCheck)) {
export async function syncWorkspace(_reconnectCheck = false) {
const { workspaceRegistered } = await retrieveRegistrationStatus();
if (!workspaceRegistered) {
return false;
}

@ -7,9 +7,9 @@ import { retrieveRegistrationStatus } from './retrieveRegistrationStatus';
import { userLoggedOut } from './userLoggedOut';
export async function userLogout(userId: string): Promise<string | boolean> {
const { connectToCloud, workspaceRegistered } = await retrieveRegistrationStatus();
const { workspaceRegistered } = await retrieveRegistrationStatus();
if (!connectToCloud || !workspaceRegistered) {
if (!workspaceRegistered) {
return '';
}

@ -6,7 +6,6 @@ import { hasPermissionAsync } from '../../authorization/server/functions/hasPerm
import { buildWorkspaceRegistrationData } from './functions/buildRegistrationData';
import { checkUserHasCloudLogin } from './functions/checkUserHasCloudLogin';
import { connectWorkspace } from './functions/connectWorkspace';
import { disconnectWorkspace } from './functions/disconnectWorkspace';
import { finishOAuthAuthorization } from './functions/finishOAuthAuthorization';
import { getOAuthAuthorizationUrl } from './functions/getOAuthAuthorizationUrl';
import { reconnectWorkspace } from './functions/reconnectWorkspace';
@ -19,7 +18,6 @@ declare module '@rocket.chat/ui-contexts' {
// eslint-disable-next-line @typescript-eslint/naming-convention
interface ServerMethods {
'cloud:checkRegisterStatus': () => {
connectToCloud: boolean;
workspaceRegistered: boolean;
workspaceId: string;
uniqueId: string;
@ -137,22 +135,6 @@ Meteor.methods<ServerMethods>({
return connectWorkspace(token);
},
async 'cloud:disconnectWorkspace'() {
const uid = Meteor.userId();
if (!uid) {
throw new Meteor.Error('error-invalid-user', 'Invalid user', {
method: 'cloud:connectServer',
});
}
if (!(await hasPermissionAsync(uid, 'manage-cloud'))) {
throw new Meteor.Error('error-not-authorized', 'Not authorized', {
method: 'cloud:connectServer',
});
}
return disconnectWorkspace();
},
async 'cloud:reconnectWorkspace'() {
const uid = Meteor.userId();
if (!uid) {

@ -72,11 +72,11 @@ Meteor.startup(() => {
}
const {
registrationStatus: { connectToCloud, workspaceRegistered },
registrationStatus: { workspaceRegistered },
} = await sdk.rest.get('/v1/cloud.registrationStatus');
c.stop();
if (connectToCloud === true && workspaceRegistered !== true) {
if (workspaceRegistered !== true) {
banners.open({
id: 'cloud-registration',
title: () => t('Cloud_registration_pending_title'),

@ -16,7 +16,6 @@ const RegisterWorkspace = () => {
const { data: registrationStatusData, isLoading, isError, refetch } = useRegistrationStatus();
const isWorkspaceRegistered = registrationStatusData?.registrationStatus?.workspaceRegistered ?? false;
const isConnectedToCloud = registrationStatusData?.registrationStatus?.connectToCloud ?? false;
if (isLoading || isError) {
return null;
@ -40,32 +39,11 @@ const RegisterWorkspace = () => {
setModal(<ManualWorkspaceRegistrationModal onClose={handleModalClose} />);
};
const handleRegistrationTag = () => {
if (!isWorkspaceRegistered && !isConnectedToCloud) {
return <Tag variant='secondary-danger'>{t('RegisterWorkspace_NotRegistered_Title')}</Tag>;
}
if (isWorkspaceRegistered && !isConnectedToCloud) {
return <Tag variant='secondary-danger'>{t('RegisterWorkspace_NotConnected_Title')}</Tag>;
}
return <Tag variant='primary'>{t('Workspace_registered')}</Tag>;
};
const handleCardsTitle = () => {
if (!isWorkspaceRegistered && !isConnectedToCloud) {
return t('RegisterWorkspace_NotRegistered_Subtitle');
}
if (isWorkspaceRegistered && !isConnectedToCloud) {
return t('RegisterWorkspace_NotConnected_Subtitle');
}
return t('RegisterWorkspace_Registered_Description');
};
return (
<Page background='tint'>
<Page.Header title={t('Registration')}>
<RegisterWorkspaceMenu
isWorkspaceRegistered={isWorkspaceRegistered}
isConnectedToCloud={isConnectedToCloud}
onClick={handleRegisterWorkspaceClick}
onStatusChange={refetch}
onClickOfflineRegistration={handleManualWorkspaceRegistrationButton}
@ -73,11 +51,15 @@ const RegisterWorkspace = () => {
</Page.Header>
<Page.ScrollableContentWithShadow>
<Box display='flex'>{handleRegistrationTag()}</Box>
<Box display='flex'>
{!isWorkspaceRegistered && <Tag variant='secondary-danger'>{t('RegisterWorkspace_NotRegistered_Title')}</Tag>}
{isWorkspaceRegistered && <Tag variant='primary'>{t('Workspace_registered')}</Tag>}
</Box>
<Box pb={8}>
<Box fontSize='h3' fontWeight={700}>
{handleCardsTitle()}
{isWorkspaceRegistered && t('RegisterWorkspace_NotRegistered_Subtitle')}
{!isWorkspaceRegistered && t('RegisterWorkspace_Registered_Description')}
</Box>
<RegisterWorkspaceCards />
</Box>

@ -8,7 +8,6 @@ import RegisteredWorkspaceModal from '../modals/RegisteredWorkspaceModal';
type RegisterWorkspaceMenuProps = {
isWorkspaceRegistered: boolean | string;
isConnectedToCloud: boolean | string;
onClick: () => void;
onClickOfflineRegistration: () => void;
onStatusChange?: () => void;
@ -16,7 +15,6 @@ type RegisterWorkspaceMenuProps = {
const RegisterWorkspaceMenu = ({
isWorkspaceRegistered,
isConnectedToCloud,
onClick,
onClickOfflineRegistration,
onStatusChange,
@ -33,7 +31,7 @@ const RegisterWorkspaceMenu = ({
return (
<ButtonGroup>
{isWorkspaceRegistered && isConnectedToCloud && (
{isWorkspaceRegistered && (
<>
<Button icon='new-window' role='link' onClick={() => handleLinkClick(CLOUD_CONSOLE_URL)}>
{t('Cloud')}
@ -44,11 +42,6 @@ const RegisterWorkspaceMenu = ({
</>
)}
{isWorkspaceRegistered && !isConnectedToCloud && (
<Button primary onClick={onClick}>
{t('ConnectWorkspace_Button')}
</Button>
)}
{!isWorkspaceRegistered && (
<>
<Button onClick={onClickOfflineRegistration}>{t('Cloud_Register_manually')}</Button>

@ -1,79 +0,0 @@
import { Box, Button, ButtonGroup, Modal } from '@rocket.chat/fuselage';
import { useMethod, useSetModal, useToastMessageDispatch, useTranslation } from '@rocket.chat/ui-contexts';
import React from 'react';
import useFeatureBullets from '../hooks/useFeatureBullets';
import RegisteredWorkspaceModal from './RegisteredWorkspaceModal';
type DisconnectWorkspaceModalProps = {
onClose: () => void;
onStatusChange?: () => void;
};
const DisconnectWorkspaceModal = ({ onClose, onStatusChange, ...props }: DisconnectWorkspaceModalProps) => {
const t = useTranslation();
const setModal = useSetModal();
const bulletFeatures = useFeatureBullets();
const dispatchToastMessage = useToastMessageDispatch();
const disconnectWorkspace = useMethod('cloud:disconnectWorkspace');
const handleCancelAction = (): void => {
const handleModalClose = (): void => setModal(null);
setModal(<RegisteredWorkspaceModal onClose={handleModalClose} />);
};
const handleUnregister = async () => {
try {
const success = await disconnectWorkspace();
if (!success) {
throw Error(t('RegisterWorkspace_Disconnect_Error'));
}
dispatchToastMessage({ type: 'success', message: t('Disconnected') });
setModal(null);
} catch (error) {
dispatchToastMessage({ type: 'error', message: error });
} finally {
await (onStatusChange && onStatusChange());
}
};
return (
<Modal {...props}>
<Modal.Header>
<Modal.HeaderText>
<Modal.Title>{t('Are_you_sure')}</Modal.Title>
</Modal.HeaderText>
<Modal.Close onClick={onClose} />
</Modal.Header>
<Modal.Content>
<Box withRichContent>
<span>{`${t('RegisterWorkspace_Disconnect_Subtitle')}: `}</span>
<ul>
{bulletFeatures.map((item, index) => (
<li key={index}>
<strong>{item.title}</strong>
<Box color='danger' is='p' mbs={4}>
{item.disconnect}
</Box>
</li>
))}
</ul>
</Box>
</Modal.Content>
<Modal.Footer>
<ButtonGroup align='end'>
<Button onClick={handleCancelAction}>{t('Cancel')}</Button>
<Button danger onClick={handleUnregister}>
{t('Disconnect_workspace')}
</Button>
</ButtonGroup>
</Modal.Footer>
</Modal>
);
};
export default DisconnectWorkspaceModal;

@ -4,7 +4,6 @@ import { useMethod, useSetModal, useToastMessageDispatch, useTranslation } from
import React, { useState } from 'react';
import useFeatureBullets from '../hooks/useFeatureBullets';
import DisconnectWorkspaceModal from './DisconnectWorkspaceModal';
type RegisteredWorkspaceModalProps = {
onClose: () => void;
@ -20,11 +19,6 @@ const RegisteredWorkspaceModal = ({ onClose, onStatusChange, ...props }: Registe
const syncWorkspace = useMethod('cloud:syncWorkspace');
const handleDisconnect = (): void => {
const handleModalClose = (): void => setModal(null);
setModal(<DisconnectWorkspaceModal onClose={handleModalClose} onStatusChange={onStatusChange} />);
};
const handleSyncAction = async () => {
setSyncing(true);
@ -40,7 +34,7 @@ const RegisteredWorkspaceModal = ({ onClose, onStatusChange, ...props }: Registe
} catch (error) {
dispatchToastMessage({ type: 'error', message: error });
} finally {
await (onStatusChange && onStatusChange());
onStatusChange?.();
setSyncing(false);
}
};
@ -70,9 +64,6 @@ const RegisteredWorkspaceModal = ({ onClose, onStatusChange, ...props }: Registe
</Modal.Content>
<Modal.Footer>
<ButtonGroup align='end'>
<Button secondary danger onClick={handleDisconnect}>
{t('Disconnect')}
</Button>
<Button icon='reload' onClick={handleSyncAction} disabled={isSyncing}>
{t('Sync')}
</Button>

@ -1,5 +1,4 @@
export type CloudRegistrationStatus = {
connectToCloud: boolean;
email: string;
token: string;
uniqueId: string;

Loading…
Cancel
Save