0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2025-12-24 16:22:44 +00:00

Change throw method, update HBErrors

This commit is contained in:
G.Ambatte
2023-06-25 14:21:35 +12:00
parent 853515e09e
commit 7efe8964f1
2 changed files with 32 additions and 9 deletions

View File

@@ -44,7 +44,32 @@ const errorIndex = ()=>{
:
Also note, if you prefer not to use your Google Drive for storage, you can always
change the storage location of a brew by clicking the Google drive icon by the
brew title and choosing *transfer my brew to/from Google Drive*.`
brew title and choosing *transfer my brew to/from Google Drive*.`,
'03' : dedent`
## The current logged in user does not have editor access to this brew.
If you believe you should have access to this brew, ask the file owner to invite you as an author by opening the brew, viewing the Properties tab, and adding your username to the "invited authors" list. You can then try to access this document again.`,
'04' : dedent`
## No Homebrewery document could be found.
The server could not locate the Homebrewery document.`,
'05' : dedent`
## Unable to save Homebrewery document.
An error occurred wil attempting to save the Homebrewery document.`,
'06' : dedent`
## Unable to delete Homebrewery document.
An error occurred while attempting to remove the Homebrewery document.`,
'07' : dedent`
## Unable to remove user from Homebrewery document.
An error occurred while attempting to remove the current user from the Homebrewery document author list!`
};
};

View File

@@ -59,7 +59,7 @@ const api = {
// Throw any error caught while attempting to retrieve Google brew.
if(googleError) {
const reason = googleError.errors[0].reason;
throw { ...Error, ...googleError, HBErrorCode: reason == 'notFound' ? '02' : '01' };
throw { ...googleError, HBErrorCode: reason == 'notFound' ? '02' : '01' };
}
// Combine the Homebrewery stub with the google brew, or if the stub doesn't exist just use the google brew
stub = stub ? _.assign({ ...api.excludeStubProps(stub), stubbed: true }, api.excludeGoogleProps(googleBrew)) : googleBrew;
@@ -68,14 +68,12 @@ const api = {
const isAuthor = stub?.authors?.includes(req.account?.username);
const isInvited = stub?.invitedAuthors?.includes(req.account?.username);
if(accessType === 'edit' && (authorsExist && !(isAuthor || isInvited))) {
throw Error(`The current logged in user does not have editor access to this brew.
If you believe you should have access to this brew, ask the file owner to invite you as an author by opening the brew, viewing the Properties tab, and adding your username to the "invited authors" list. You can then try to access this document again.`);
throw { name: 'Access Error', message: 'User is not an Author', status: 403, HBErrorCode: '03' };
}
// If after all of that we still don't have a brew, throw an exception
if(!stub && !stubOnly) {
throw Error('Brew not found in Homebrewery database or Google Drive');
throw { name: 'BrewLoad Error', message: 'Brew not found', status: 404, HBErrorCode: '04' };
}
// Clean up brew: fill in missing fields with defaults / fix old invalid values
@@ -184,7 +182,7 @@ If you believe you should have access to this brew, ask the file owner to invite
saved = await newHomebrew.save()
.catch((err)=>{
console.error(err, err.toString(), err.stack);
throw Error(`Error while creating new brew, ${err.toString()}`);
throw { name: 'BrewSave Error', message: `Error while creating new brew, ${err.toString()}`, status: 500, HBErrorCode: '05' };
});
if(!saved) return;
saved = saved.toObject();
@@ -311,7 +309,7 @@ If you believe you should have access to this brew, ask the file owner to invite
await HomebrewModel.deleteOne({ _id: brew._id })
.catch((err)=>{
console.error(err);
throw Error('Error while removing', { status: 500 });
throw { name: 'BrewDelete Error', message: 'Error while removing', status: 500, HBErrorCode: '06' };
});
} else {
if(shouldDeleteGoogleBrew) {
@@ -323,7 +321,7 @@ If you believe you should have access to this brew, ask the file owner to invite
brew.markModified('authors'); //Mongo will not properly update arrays without markModified()
await brew.save()
.catch((err)=>{
throw Error(err, { status: 500 });
throw { name: 'BrewAuthorDelete Error', message: err, status: 500, HBErrorCode: '07' };
});
}
}