0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-03-11 02:12:21 -05:00

Updated the validateSettings method to check stripe_plans

refs #11765

This ensures that plans will always be set to 1 of the currency
This commit is contained in:
Fabien O'Carroll 2020-06-30 16:42:38 +02:00 committed by Fabien 'egg' O'Carroll
parent 38fce4efc5
commit f3b4a538af

View file

@ -272,19 +272,31 @@ function validateSchema(tableName, model, options) {
// Validation for settings
// settings are checked against the validation objects
// form default-settings.json
function validateSettings(defaultSettings, model) {
const values = model.toJSON();
async function validateSettings(defaultSettings, model) {
const setting = model.toJSON();
let validationErrors = [];
const matchingDefault = defaultSettings[values.key];
const matchingDefault = defaultSettings[setting.key];
if (matchingDefault && matchingDefault.validations) {
validationErrors = validationErrors.concat(validate(values.value, values.key, matchingDefault.validations, 'settings'));
validationErrors = validationErrors.concat(validate(setting.value, setting.key, matchingDefault.validations, 'settings'));
}
if (validationErrors.length !== 0) {
return Promise.reject(validationErrors);
}
if (setting.key === 'stripe_plans') {
const plans = JSON.parse(setting.value);
for (const plan of plans) {
// We check 100, not 1, because amounts are in fractional units
if (plan.amount < 100 && plan.name !== 'Complimentary') {
throw new errors.ValidationError({
message: 'Plans cannot have an amount less than 1'
});
}
}
}
return Promise.resolve();
}