refactor: Improve error logging/reporting for cli (#4691)
* use response error classes instead of `ResponseError` everywhere * improve error logging in dev mode or when telemetry is disabled
This commit is contained in:
committed by
GitHub
parent
5364e7fc92
commit
0b754a4f85
@@ -54,7 +54,7 @@ EECredentialsController.get(
|
||||
const includeDecryptedData = req.query.includeData === 'true';
|
||||
|
||||
if (Number.isNaN(Number(credentialId))) {
|
||||
throw new ResponseHelper.ResponseError(`Credential ID must be a number.`, undefined, 400);
|
||||
throw new ResponseHelper.BadRequestError(`Credential ID must be a number.`);
|
||||
}
|
||||
|
||||
let credential = (await EECredentials.get(
|
||||
@@ -63,17 +63,15 @@ EECredentialsController.get(
|
||||
)) as CredentialsEntity & CredentialWithSharings;
|
||||
|
||||
if (!credential) {
|
||||
throw new ResponseHelper.ResponseError(
|
||||
throw new ResponseHelper.NotFoundError(
|
||||
'Could not load the credential. If you think this is an error, ask the owner to share it with you again',
|
||||
undefined,
|
||||
404,
|
||||
);
|
||||
}
|
||||
|
||||
const userSharing = credential.shared?.find((shared) => shared.user.id === req.user.id);
|
||||
|
||||
if (!userSharing && req.user.globalRole.name !== 'owner') {
|
||||
throw new ResponseHelper.ResponseError(`Forbidden.`, undefined, 403);
|
||||
throw new ResponseHelper.UnauthorizedError(`Forbidden.`);
|
||||
}
|
||||
|
||||
credential = EECredentials.addOwnerAndSharings(credential);
|
||||
@@ -117,7 +115,7 @@ EECredentialsController.post(
|
||||
if (!ownsCredential) {
|
||||
const sharing = await EECredentials.getSharing(req.user, credentials.id);
|
||||
if (!sharing) {
|
||||
throw new ResponseHelper.ResponseError(`Forbidden`, undefined, 403);
|
||||
throw new ResponseHelper.UnauthorizedError(`Forbidden`);
|
||||
}
|
||||
|
||||
const decryptedData = await EECredentials.decrypt(encryptionKey, sharing.credentials);
|
||||
@@ -144,13 +142,13 @@ EECredentialsController.put(
|
||||
!Array.isArray(shareWithIds) ||
|
||||
!shareWithIds.every((userId) => typeof userId === 'string')
|
||||
) {
|
||||
throw new ResponseHelper.ResponseError('Bad request', undefined, 400);
|
||||
throw new ResponseHelper.BadRequestError('Bad request');
|
||||
}
|
||||
|
||||
const { ownsCredential, credential } = await EECredentials.isOwned(req.user, credentialId);
|
||||
|
||||
if (!ownsCredential || !credential) {
|
||||
throw new ResponseHelper.ResponseError('Forbidden', undefined, 403);
|
||||
throw new ResponseHelper.UnauthorizedError('Forbidden');
|
||||
}
|
||||
|
||||
let amountRemoved: number | null = null;
|
||||
|
||||
@@ -75,16 +75,14 @@ credentialsController.get(
|
||||
const includeDecryptedData = req.query.includeData === 'true';
|
||||
|
||||
if (Number.isNaN(Number(credentialId))) {
|
||||
throw new ResponseHelper.ResponseError(`Credential ID must be a number.`, undefined, 400);
|
||||
throw new ResponseHelper.BadRequestError(`Credential ID must be a number.`);
|
||||
}
|
||||
|
||||
const sharing = await CredentialsService.getSharing(req.user, credentialId, ['credentials']);
|
||||
|
||||
if (!sharing) {
|
||||
throw new ResponseHelper.ResponseError(
|
||||
throw new ResponseHelper.NotFoundError(
|
||||
`Credential with ID "${credentialId}" could not be found.`,
|
||||
undefined,
|
||||
404,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -159,10 +157,8 @@ credentialsController.patch(
|
||||
credentialId,
|
||||
userId: req.user.id,
|
||||
});
|
||||
throw new ResponseHelper.ResponseError(
|
||||
throw new ResponseHelper.NotFoundError(
|
||||
'Credential to be updated not found. You can only update credentials owned by you',
|
||||
undefined,
|
||||
404,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -183,10 +179,8 @@ credentialsController.patch(
|
||||
const responseData = await CredentialsService.update(credentialId, newCredentialData);
|
||||
|
||||
if (responseData === undefined) {
|
||||
throw new ResponseHelper.ResponseError(
|
||||
throw new ResponseHelper.NotFoundError(
|
||||
`Credential ID "${credentialId}" could not be found to be updated.`,
|
||||
undefined,
|
||||
404,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -217,10 +211,8 @@ credentialsController.delete(
|
||||
credentialId,
|
||||
userId: req.user.id,
|
||||
});
|
||||
throw new ResponseHelper.ResponseError(
|
||||
throw new ResponseHelper.NotFoundError(
|
||||
'Credential to be deleted not found. You can only removed credentials owned by you',
|
||||
undefined,
|
||||
404,
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -206,11 +206,7 @@ export class CredentialsService {
|
||||
try {
|
||||
return await UserSettings.getEncryptionKey();
|
||||
} catch (error) {
|
||||
throw new ResponseHelper.ResponseError(
|
||||
RESPONSE_ERROR_MESSAGES.NO_ENCRYPTION_KEY,
|
||||
undefined,
|
||||
500,
|
||||
);
|
||||
throw new ResponseHelper.InternalServerError(RESPONSE_ERROR_MESSAGES.NO_ENCRYPTION_KEY);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@ oauth2CredentialController.get(
|
||||
const { id: credentialId } = req.query;
|
||||
|
||||
if (!credentialId) {
|
||||
throw new ResponseHelper.ResponseError('Required credential ID is missing', undefined, 400);
|
||||
throw new ResponseHelper.BadRequestError('Required credential ID is missing');
|
||||
}
|
||||
|
||||
const credential = await getCredentialForUser(credentialId, req.user);
|
||||
@@ -68,14 +68,14 @@ oauth2CredentialController.get(
|
||||
userId: req.user.id,
|
||||
credentialId,
|
||||
});
|
||||
throw new ResponseHelper.ResponseError(RESPONSE_ERROR_MESSAGES.NO_CREDENTIAL, undefined, 404);
|
||||
throw new ResponseHelper.NotFoundError(RESPONSE_ERROR_MESSAGES.NO_CREDENTIAL);
|
||||
}
|
||||
|
||||
let encryptionKey: string;
|
||||
try {
|
||||
encryptionKey = await UserSettings.getEncryptionKey();
|
||||
} catch (error) {
|
||||
throw new ResponseHelper.ResponseError((error as Error).message, undefined, 500);
|
||||
throw new ResponseHelper.InternalServerError((error as Error).message);
|
||||
}
|
||||
|
||||
const mode: WorkflowExecuteMode = 'internal';
|
||||
@@ -173,12 +173,10 @@ oauth2CredentialController.get(
|
||||
const { code, state: stateEncoded } = req.query;
|
||||
|
||||
if (!code || !stateEncoded) {
|
||||
const errorResponse = new ResponseHelper.ResponseError(
|
||||
const errorResponse = new ResponseHelper.ServiceUnavailableError(
|
||||
`Insufficient parameters for OAuth2 callback. Received following query parameters: ${JSON.stringify(
|
||||
req.query,
|
||||
)}`,
|
||||
undefined,
|
||||
503,
|
||||
);
|
||||
return ResponseHelper.sendErrorResponse(res, errorResponse);
|
||||
}
|
||||
@@ -190,10 +188,8 @@ oauth2CredentialController.get(
|
||||
token: string;
|
||||
};
|
||||
} catch (error) {
|
||||
const errorResponse = new ResponseHelper.ResponseError(
|
||||
const errorResponse = new ResponseHelper.ServiceUnavailableError(
|
||||
'Invalid state format returned',
|
||||
undefined,
|
||||
503,
|
||||
);
|
||||
return ResponseHelper.sendErrorResponse(res, errorResponse);
|
||||
}
|
||||
@@ -205,10 +201,8 @@ oauth2CredentialController.get(
|
||||
userId: req.user?.id,
|
||||
credentialId: state.cid,
|
||||
});
|
||||
const errorResponse = new ResponseHelper.ResponseError(
|
||||
const errorResponse = new ResponseHelper.NotFoundError(
|
||||
RESPONSE_ERROR_MESSAGES.NO_CREDENTIAL,
|
||||
undefined,
|
||||
404,
|
||||
);
|
||||
return ResponseHelper.sendErrorResponse(res, errorResponse);
|
||||
}
|
||||
@@ -217,11 +211,7 @@ oauth2CredentialController.get(
|
||||
try {
|
||||
encryptionKey = await UserSettings.getEncryptionKey();
|
||||
} catch (error) {
|
||||
throw new ResponseHelper.ResponseError(
|
||||
(error as IDataObject).message as string,
|
||||
undefined,
|
||||
500,
|
||||
);
|
||||
throw new ResponseHelper.InternalServerError((error as IDataObject).message as string);
|
||||
}
|
||||
|
||||
const mode: WorkflowExecuteMode = 'internal';
|
||||
@@ -250,10 +240,8 @@ oauth2CredentialController.get(
|
||||
userId: req.user?.id,
|
||||
credentialId: state.cid,
|
||||
});
|
||||
const errorResponse = new ResponseHelper.ResponseError(
|
||||
const errorResponse = new ResponseHelper.NotFoundError(
|
||||
'The OAuth2 callback state is invalid!',
|
||||
undefined,
|
||||
404,
|
||||
);
|
||||
return ResponseHelper.sendErrorResponse(res, errorResponse);
|
||||
}
|
||||
@@ -299,11 +287,7 @@ oauth2CredentialController.get(
|
||||
userId: req.user?.id,
|
||||
credentialId: state.cid,
|
||||
});
|
||||
const errorResponse = new ResponseHelper.ResponseError(
|
||||
'Unable to get access tokens!',
|
||||
undefined,
|
||||
404,
|
||||
);
|
||||
const errorResponse = new ResponseHelper.NotFoundError('Unable to get access tokens!');
|
||||
return ResponseHelper.sendErrorResponse(res, errorResponse);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user