Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions apps/meteor/app/cloud/server/functions/connectWorkspace.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,13 @@ export async function connectWorkspace(token: string) {
},
data: regInfo,
});
} catch (e: any) {
if (e.response?.data?.error) {
SystemLogger.error(`Failed to register with Rocket.Chat Cloud. Error: ${e.response.data.error}`);
} else {
SystemLogger.error(e);
}
} catch (err: any) {
SystemLogger.error({
msg: 'Failed to Connect with Rocket.Chat Cloud',
url: '/api/oauth/clients',
...(err.response?.data && { cloudError: err.response.data }),
err,
});

return false;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,13 @@ export function finishOAuthAuthorization(code, state) {
redirect_uri: getRedirectUri(),
},
});
} catch (e) {
if (e.response && e.response.data && e.response.data.error) {
SystemLogger.error(`Failed to get AccessToken from Rocket.Chat Cloud. Error: ${e.response.data.error}`);
} else {
SystemLogger.error(e);
}
} catch (err) {
SystemLogger.error({
msg: 'Failed to finish OAuth authorization with Rocket.Chat Cloud',
url: '/api/oauth/token',
...(err.response?.data && { cloudError: err.response.data }),
err,
});

return false;
}
Expand Down
16 changes: 8 additions & 8 deletions apps/meteor/app/cloud/server/functions/getConfirmationPoll.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,18 @@ export async function getConfirmationPoll(deviceCode: string): Promise<CloudConf
let result;
try {
result = HTTP.get(`${cloudUrl}/api/v2/register/workspace/poll?token=${deviceCode}`);
} catch (e: any) {
if (e.response?.data?.error) {
SystemLogger.error(`Failed to register with Rocket.Chat Cloud. ErrorCode: ${e.response.data.error}`);
} else {
SystemLogger.error(e);
}
} catch (err: any) {
SystemLogger.error({
msg: 'Failed to get confirmation poll from Rocket.Chat Cloud',
url: '/api/v2/register/workspace/poll',
...(err.response?.data && { cloudError: err.response.data }),
err,
});

throw e;
throw err;
}

const { data } = result;

if (!data) {
throw new Error('Failed to retrieve registration confirmation poll data');
}
Expand Down
17 changes: 10 additions & 7 deletions apps/meteor/app/cloud/server/functions/getUserCloudAccessToken.js
Original file line number Diff line number Diff line change
Expand Up @@ -61,20 +61,23 @@ export function getUserCloudAccessToken(userId, forceNew = false, scope = '', sa
redirect_uri: redirectUri,
},
});
} catch (e) {
if (e.response && e.response.data && e.response.data.error) {
SystemLogger.error(`Failed to get User AccessToken from Rocket.Chat Cloud. Error: ${e.response.data.error}`);
} catch (err) {
SystemLogger.error({
msg: 'Failed to get User AccessToken from Rocket.Chat Cloud',
url: '/api/oauth/token',
...(err.response?.data && { cloudError: err.response.data }),
err,
});

if (e.response.data.error === 'oauth_invalid_client_credentials') {
if (err.response?.data?.error) {
if (err.response.data.error === 'oauth_invalid_client_credentials') {
SystemLogger.error('Server has been unregistered from cloud');
unregisterWorkspace();
}

if (e.response.data.error === 'unauthorized') {
if (err.response.data.error === 'unauthorized') {
userLoggedOut(userId);
}
} else {
SystemLogger.error(e);
}

return '';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,16 +41,18 @@ export function getWorkspaceAccessTokenWithScope(scope = '') {
redirect_uri: redirectUri,
},
});
} catch (e) {
if (e.response && e.response.data && e.response.data.error) {
SystemLogger.error(`Failed to get AccessToken from Rocket.Chat Cloud. Error: ${e.response.data.error}`);
} catch (err) {
SystemLogger.error({
msg: 'Failed to get Workspace AccessToken from Rocket.Chat Cloud',
url: '/api/oauth/token',
scope,
...(err.response?.data && { cloudError: err.response.data }),
err,
});

if (e.response.data.error === 'oauth_invalid_client_credentials') {
SystemLogger.error('Server has been unregistered from cloud');
unregisterWorkspace();
}
} else {
SystemLogger.error(e);
if (err.response?.data?.error === 'oauth_invalid_client_credentials') {
SystemLogger.error('Server has been unregistered from cloud');
unregisterWorkspace();
}

return tokenResponse;
Expand Down
33 changes: 21 additions & 12 deletions apps/meteor/app/cloud/server/functions/getWorkspaceLicense.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,21 @@ import { callbacks } from '../../../../lib/callbacks';
import { LICENSE_VERSION } from '../license';
import { SystemLogger } from '../../../../server/lib/logger/system';

export async function getWorkspaceLicense() {
const token = await getWorkspaceAccessToken();
export async function getWorkspaceLicense(): Promise<{ updated: boolean; license: string }> {
const currentLicense = await Settings.findOne('Cloud_Workspace_License');

const cachedLicenseReturn = () => {
const license = currentLicense?.value as string;
if (license) {
callbacks.run('workspaceLicenseChanged', license);
}

return { updated: false, license };
};

const token = await getWorkspaceAccessToken();
if (!token) {
return { updated: false, license: '' };
return cachedLicenseReturn();
}

let licenseResult;
Expand All @@ -21,25 +31,24 @@ export async function getWorkspaceLicense() {
Authorization: `Bearer ${token}`,
},
});
} catch (e: any) {
if (e.response?.data?.error) {
SystemLogger.error(`Failed to update license from Rocket.Chat Cloud. Error: ${e.response.data.error}`);
} else {
SystemLogger.error(e);
}
} catch (err: any) {
SystemLogger.error({
msg: 'Failed to update license from Rocket.Chat Cloud',
...(err.response?.data && { cloudError: err.response.data }),
err,
});

return { updated: false, license: '' };
return cachedLicenseReturn();
}

const remoteLicense = licenseResult.data;
const currentLicense = await Settings.findOne('Cloud_Workspace_License');

if (!currentLicense || !currentLicense._updatedAt) {
throw new Error('Failed to retrieve current license');
}

if (remoteLicense.updatedAt <= currentLicense._updatedAt) {
return { updated: false, license: '' };
return cachedLicenseReturn();
}

await Settings.updateValueById('Cloud_Workspace_License', remoteLicense.license);
Expand Down
14 changes: 8 additions & 6 deletions apps/meteor/app/cloud/server/functions/startRegisterWorkspace.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,14 @@ export async function startRegisterWorkspace(resend = false) {
result = HTTP.post(`${cloudUrl}/api/v2/register/workspace?resend=${resend}`, {
data: regInfo,
});
} catch (e: any) {
if (e.response?.data?.error) {
SystemLogger.error(`Failed to register with Rocket.Chat Cloud. ErrorCode: ${e.response.data.error}`);
} else {
SystemLogger.error(e);
}
} catch (err: any) {
SystemLogger.error({
msg: 'Failed to register with Rocket.Chat Cloud',
url: '/api/v2/register/workspace',
...(err.response?.data && { cloudError: err.response.data }),
err,
});

return false;
}
const { data } = result;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,15 @@ export async function startRegisterWorkspaceSetupWizard(resend = false, email: s
result = HTTP.post(`${cloudUrl}/api/v2/register/workspace/intent?resent=${resend}`, {
data: regInfo,
});
} catch (e: any) {
if (e.response?.data?.error) {
SystemLogger.error(`Failed to register with Rocket.Chat Cloud. ErrorCode: ${e.response.data.error}`);
} else {
SystemLogger.error(e);
}
} catch (err: any) {
SystemLogger.error({
msg: 'Failed to register workspace intent with Rocket.Chat Cloud',
url: '/api/v2/register/workspace',
...(err.response?.data && { cloudError: err.response.data }),
err,
});

throw e;
throw err;
}

const { data } = result;
Expand Down
17 changes: 9 additions & 8 deletions apps/meteor/app/cloud/server/functions/syncWorkspace.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,16 +35,17 @@ export async function syncWorkspace(reconnectCheck = false) {
data: info,
headers,
});

await getWorkspaceLicense();
} catch (e: any) {
if (e.response?.data?.error) {
SystemLogger.error(`Failed to sync with Rocket.Chat Cloud. Error: ${e.response.data.error}`);
} else {
SystemLogger.error(e);
}
} catch (err: any) {
SystemLogger.error({
msg: 'Failed to sync with Rocket.Chat Cloud',
...(err.response?.data && { cloudError: err.response.data }),
err,
});

return false;
} finally {
// aways fetch the license
await getWorkspaceLicense();
}

const { data } = result;
Expand Down
13 changes: 7 additions & 6 deletions apps/meteor/app/cloud/server/functions/userLogout.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,13 @@ export function userLogout(userId) {
token_type_hint: 'refresh_token',
},
});
} catch (e) {
if (e.response && e.response.data && e.response.data.error) {
SystemLogger.error(`Failed to get Revoke refresh token to logout of Rocket.Chat Cloud. Error: ${e.response.data.error}`);
} else {
SystemLogger.error(e);
}
} catch (err) {
SystemLogger.error({
msg: 'Failed to get Revoke refresh token to logout of Rocket.Chat Cloud',
url: '/api/oauth/revoke',
...(err.response?.data && { cloudError: err.response.data }),
err,
});
}
}

Expand Down