078060abdc
* Installed @tryghost/members-ssr@0.2.1 refs https://github.com/TryGhost/Members/issues/38 This updates allows for dynamic access of the membersApi, which will be used in future when replacing the membersApi instance with a newly configured one. * Set the membersApiInstance logger to use common.logging refs https://github.com/TryGhost/Members/issues/38 Passes the Ghost logger to the members api, so that we can keep an eye on errors produced by the api. * Refactored memberService use to always use getter refs https://github.com/TryGhost/Members/issues/38 This will allow us to switch out the membersApi and the consumers of it to have the updated reference by going through a getter. * Installed @tryghost/members-api@0.3.0 refs https://github.com/TryGhost/Members/issues/38 Adds support for setting the logger * Uninstalled stripe@7.0.0 refs https://github.com/TryGhost/Members/issues/38 The stripe module is now a dep of members-api, as it should be * Updated members service to reconfigure settings refs https://github.com/TryGhost/Members/issues/38 Previously we were unable to stop an invalidly configured members api instance, now that we create a new instance, we can wait for the ready or error event and only switch it out then.
61 lines
1.8 KiB
JavaScript
61 lines
1.8 KiB
JavaScript
const {static} = require('express');
|
|
const path = require('path');
|
|
const MembersSSR = require('@tryghost/members-ssr');
|
|
|
|
const createMembersApiInstance = require('./api');
|
|
const common = require('../../lib/common');
|
|
const urlUtils = require('../../lib/url-utils');
|
|
const settingsCache = require('../settings/cache');
|
|
|
|
let membersApi;
|
|
|
|
// Bind to events to automatically keep subscription info up-to-date from settings
|
|
common.events.on('settings.edited', function updateSettingFromModel(settingModel) {
|
|
if (!['members_subscription_settings', 'title', 'icon'].includes(settingModel.get('key'))) {
|
|
return;
|
|
}
|
|
|
|
const reconfiguredMembersAPI = createMembersApiInstance();
|
|
reconfiguredMembersAPI.bus.on('ready', function () {
|
|
membersApi = reconfiguredMembersAPI;
|
|
});
|
|
reconfiguredMembersAPI.bus.on('error', function (err) {
|
|
common.logging.error(err);
|
|
});
|
|
});
|
|
|
|
const membersService = {
|
|
isPaymentConfigured() {
|
|
const settings = settingsCache.get('members_subscription_settings');
|
|
return !!settings && settings.isPaid && settings.paymentProcessors.length !== 0;
|
|
},
|
|
|
|
get api() {
|
|
if (!membersApi) {
|
|
membersApi = createMembersApiInstance();
|
|
|
|
membersApi.bus.on('error', function (err) {
|
|
common.logging.error(err);
|
|
});
|
|
}
|
|
return membersApi;
|
|
},
|
|
|
|
ssr: MembersSSR({
|
|
cookieSecure: urlUtils.isSSL(urlUtils.getSiteUrl()),
|
|
cookieKeys: [settingsCache.get('theme_session_secret')],
|
|
// This is passed as a function so that updates to the instance
|
|
// are picked up in the ssr module
|
|
membersApi: () => membersApi
|
|
}),
|
|
|
|
authPages: static(
|
|
path.join(
|
|
require.resolve('@tryghost/members-auth-pages'),
|
|
'../dist'
|
|
)
|
|
)
|
|
};
|
|
|
|
module.exports = membersService;
|