Skip to content

Commit abc1ff7

Browse files
authored
Disabled settings editing for Stripe Connect when limit is enabled (#24364)
closes [BAE-330](https://linear.app/ghost/issue/BAE-330/ghost-implement-server-sid e-limit-validations) - Added `errorIfWouldGoOverLimit` check for 'limitStripeConnect' when editing Stripe settings - Prevents updating Stripe Connect settings when the limit is enabled - Added E2E tests to verify the limit enforcement works correctly - The limit check is performed when `stripeConnectData` is present during settings edit
1 parent c157d82 commit abc1ff7

File tree

5 files changed

+532
-3
lines changed

5 files changed

+532
-3
lines changed

ghost/core/core/server/services/settings/SettingsBREADService.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,14 @@ class SettingsBREADService {
2424
* @param {Object} options.singleUseTokenProvider
2525
* @param {Object} options.urlUtils
2626
* @param {Object} options.labsService - labs service instance
27+
* @param {Object} options.limitsService - limits service instance
2728
* @param {{service: Object}} options.emailAddressService
2829
*/
29-
constructor({SettingsModel, settingsCache, labsService, mail, singleUseTokenProvider, urlUtils, emailAddressService}) {
30+
constructor({SettingsModel, settingsCache, labsService, limitsService, mail, singleUseTokenProvider, urlUtils, emailAddressService}) {
3031
this.SettingsModel = SettingsModel;
3132
this.settingsCache = settingsCache;
3233
this.labs = labsService;
34+
this.limitsService = limitsService;
3335
this.emailAddressService = emailAddressService;
3436

3537
/* email verification setup */
@@ -194,6 +196,8 @@ class SettingsBREADService {
194196
}
195197

196198
if (stripeConnectData) {
199+
await this.limitsService.errorIfWouldGoOverLimit('limitStripeConnect');
200+
197201
filteredSettings.push({
198202
key: 'stripe_connect_publishable_key',
199203
value: stripeConnectData.public_key

ghost/core/core/server/services/settings/settings-service.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
const events = require('../../lib/common/events');
66
const models = require('../../models');
77
const labs = require('../../../shared/labs');
8+
const limits = require('../limits');
89
const config = require('../../../shared/config');
910
const adapterManager = require('../adapter-manager');
1011
const SettingsCache = require('../../../shared/settings-cache');
@@ -30,6 +31,7 @@ const getSettingsBREADServiceInstance = () => {
3031
SettingsModel: models.Settings,
3132
settingsCache: SettingsCache,
3233
labsService: labs,
34+
limitsService: limits,
3335
mail,
3436
singleUseTokenProvider: new SingleUseTokenProvider({
3537
SingleUseTokenModel: models.SingleUseToken,

0 commit comments

Comments
 (0)