mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-28 05:14:12 +03:00
Updated members service to use config module
no-issue
This commit is contained in:
parent
90d582c5f6
commit
cc39786958
@ -1,15 +1,12 @@
|
||||
const crypto = require('crypto');
|
||||
const {URL} = require('url');
|
||||
const settingsCache = require('../settings/cache');
|
||||
const urlUtils = require('../../lib/url-utils');
|
||||
const MembersApi = require('@tryghost/members-api');
|
||||
const common = require('../../lib/common');
|
||||
const ghostVersion = require('../../lib/ghost-version');
|
||||
const mail = require('../mail');
|
||||
const models = require('../../models');
|
||||
const signinEmail = require('./emails/signin');
|
||||
const signupEmail = require('./emails/signup');
|
||||
const subscribeEmail = require('./emails/subscribe');
|
||||
const config = require('./config');
|
||||
|
||||
async function createMember({email, name, note}, options = {}) {
|
||||
const model = await models.Member.add({
|
||||
@ -111,102 +108,17 @@ function listMembers(options) {
|
||||
});
|
||||
}
|
||||
|
||||
const getApiUrl = ({version, type}) => {
|
||||
const {href} = new URL(
|
||||
urlUtils.getApiPath({version, type}),
|
||||
urlUtils.urlFor('admin', true)
|
||||
);
|
||||
return href;
|
||||
};
|
||||
|
||||
const siteUrl = urlUtils.getSiteUrl();
|
||||
const membersApiUrl = getApiUrl({version: 'v3', type: 'members'});
|
||||
|
||||
const ghostMailer = new mail.GhostMailer();
|
||||
|
||||
function getStripePaymentConfig() {
|
||||
const subscriptionSettings = settingsCache.get('members_subscription_settings');
|
||||
|
||||
const stripePaymentProcessor = subscriptionSettings.paymentProcessors.find(
|
||||
paymentProcessor => paymentProcessor.adapter === 'stripe'
|
||||
);
|
||||
|
||||
if (!stripePaymentProcessor || !stripePaymentProcessor.config) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!stripePaymentProcessor.config.public_token || !stripePaymentProcessor.config.secret_token) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const webhookHandlerUrl = new URL('/members/webhooks/stripe', siteUrl);
|
||||
|
||||
const checkoutSuccessUrl = new URL(siteUrl);
|
||||
checkoutSuccessUrl.searchParams.set('stripe', 'success');
|
||||
const checkoutCancelUrl = new URL(siteUrl);
|
||||
checkoutCancelUrl.searchParams.set('stripe', 'cancel');
|
||||
|
||||
return {
|
||||
publicKey: stripePaymentProcessor.config.public_token,
|
||||
secretKey: stripePaymentProcessor.config.secret_token,
|
||||
checkoutSuccessUrl: checkoutSuccessUrl.href,
|
||||
checkoutCancelUrl: checkoutCancelUrl.href,
|
||||
webhookHandlerUrl: webhookHandlerUrl.href,
|
||||
product: stripePaymentProcessor.config.product,
|
||||
plans: stripePaymentProcessor.config.plans,
|
||||
appInfo: {
|
||||
name: 'Ghost',
|
||||
partner_id: 'pp_partner_DKmRVtTs4j9pwZ',
|
||||
version: ghostVersion.original,
|
||||
url: 'https://ghost.org/'
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function getAuthSecret() {
|
||||
const hexSecret = settingsCache.get('members_email_auth_secret');
|
||||
if (!hexSecret) {
|
||||
common.logging.warn('Could not find members_email_auth_secret, using dynamically generated secret');
|
||||
return crypto.randomBytes(64);
|
||||
}
|
||||
const secret = Buffer.from(hexSecret, 'hex');
|
||||
if (secret.length < 64) {
|
||||
common.logging.warn('members_email_auth_secret not large enough (64 bytes), using dynamically generated secret');
|
||||
return crypto.randomBytes(64);
|
||||
}
|
||||
return secret;
|
||||
}
|
||||
|
||||
function getAllowSelfSignup() {
|
||||
const subscriptionSettings = settingsCache.get('members_subscription_settings');
|
||||
return subscriptionSettings.allowSelfSignup;
|
||||
}
|
||||
|
||||
// NOTE: the function is an exact duplicate of one in GhostMailer should be extracted
|
||||
// into a common lib once it needs to be reused anywhere else again
|
||||
function getDomain() {
|
||||
const domain = urlUtils.urlFor('home', true).match(new RegExp('^https?://([^/:?#]+)(?:[/:?#]|$)', 'i'));
|
||||
return domain && domain[1];
|
||||
}
|
||||
|
||||
module.exports = createApiInstance;
|
||||
|
||||
function createApiInstance() {
|
||||
const membersApiInstance = MembersApi({
|
||||
tokenConfig: {
|
||||
issuer: membersApiUrl,
|
||||
publicKey: settingsCache.get('members_public_key'),
|
||||
privateKey: settingsCache.get('members_private_key')
|
||||
},
|
||||
tokenConfig: config.getTokenConfig(),
|
||||
auth: {
|
||||
getSigninURL(token, type) {
|
||||
const signinURL = new URL(siteUrl);
|
||||
signinURL.searchParams.set('token', token);
|
||||
signinURL.searchParams.set('action', type);
|
||||
return signinURL.href;
|
||||
},
|
||||
allowSelfSignup: getAllowSelfSignup(),
|
||||
secret: getAuthSecret()
|
||||
getSigninURL: config.getSigninURL,
|
||||
allowSelfSignup: config.getAllowSelfSignup(),
|
||||
secret: config.getAuthSecret()
|
||||
},
|
||||
mail: {
|
||||
transporter: {
|
||||
@ -215,15 +127,10 @@ function createApiInstance() {
|
||||
common.logging.warn(message.text);
|
||||
}
|
||||
let msg = Object.assign({
|
||||
from: config.getEmailFromAddress(),
|
||||
subject: 'Signin',
|
||||
forceTextContent: true
|
||||
}, message);
|
||||
const subscriptionSettings = settingsCache.get('members_subscription_settings');
|
||||
|
||||
if (subscriptionSettings && subscriptionSettings.fromAddress) {
|
||||
let from = `${subscriptionSettings.fromAddress}@${getDomain()}`;
|
||||
msg = Object.assign({from: from}, msg);
|
||||
}
|
||||
|
||||
return ghostMailer.send(msg);
|
||||
}
|
||||
@ -314,7 +221,7 @@ function createApiInstance() {
|
||||
}
|
||||
},
|
||||
paymentConfig: {
|
||||
stripe: getStripePaymentConfig()
|
||||
stripe: config.getStripePaymentConfig()
|
||||
},
|
||||
setMetadata,
|
||||
getMetadata,
|
||||
|
Loading…
Reference in New Issue
Block a user