diff --git a/ghost/members-api/index.js b/ghost/members-api/index.js index 968cb12ef2..31cfdd6c66 100644 --- a/ghost/members-api/index.js +++ b/ghost/members-api/index.js @@ -85,7 +85,6 @@ module.exports = function MembersApi({ } const users = Users({ - sendEmailWithMagicLink, stripe, memberModel }); @@ -311,6 +310,7 @@ module.exports = function MembersApi({ getMemberIdentityData, getPublicConfig, bus, + sendEmailWithMagicLink, members: users }; }; diff --git a/ghost/members-api/lib/users.js b/ghost/members-api/lib/users.js index d850e89fa5..aa1c918bfb 100644 --- a/ghost/members-api/lib/users.js +++ b/ghost/members-api/lib/users.js @@ -3,19 +3,19 @@ const common = require('./common'); let Member; -async function createMember({email, name, note}, options = {}) { +async function createMember({email, name, note}) { const model = await Member.add({ email, name, note }); - const member = model.toJSON(options); + const member = model.toJSON(); return member; } async function getMember(data, options = {}) { if (!data.email && !data.id && !data.uuid) { - return Promise.resolve(null); + return null; } const model = await Member.findOne(data, options); if (!model) { @@ -56,12 +56,25 @@ function listMembers(options) { } module.exports = function ({ - sendEmailWithMagicLink, stripe, memberModel }) { Member = memberModel; + async function getStripeSubscriptions(member) { + if (!stripe) { + return {subscriptions: []}; + } + + return await stripe.getActiveSubscriptions(member); + } + + async function destroyStripeSubscriptions(member) { + if (stripe) { + await stripe.cancelAllSubscriptions(member); + } + } + async function get(data, options) { debug(`get id:${data.id} email:${data.email}`); const member = await getMember(data, options); @@ -69,15 +82,8 @@ module.exports = function ({ return member; } - if (!stripe) { - return Object.assign(member, { - stripe: { - subscriptions: [] - } - }); - } try { - const subscriptions = await stripe.getActiveSubscriptions(member); + const subscriptions = await getStripeSubscriptions(member); return Object.assign(member, { stripe: { @@ -96,15 +102,15 @@ module.exports = function ({ if (!member) { return; } - if (stripe) { - await stripe.cancelAllSubscriptions(member); - } - return deleteMember(data, options); + + await destroyStripeSubscriptions(member); + + return deleteMember(data); } async function update(data, options) { debug(`update id:${options.id}`); - await getMember({id: options.id}); + return updateMember(data, options); } @@ -112,15 +118,7 @@ module.exports = function ({ const {meta, members} = await listMembers(options); const membersWithSubscriptions = await Promise.all(members.map(async function (member) { - if (!stripe) { - return Object.assign(member, { - stripe: { - subscriptions: [] - } - }); - } - - const subscriptions = await stripe.getActiveSubscriptions(member); + const subscriptions = await getStripeSubscriptions(member); return Object.assign(member, { stripe: { @@ -135,13 +133,9 @@ module.exports = function ({ }; } - async function create(data, options = {}) { + async function create(data) { debug(`create email:${data.email}`); const member = await createMember(data); - if (options.sendEmail) { - debug(`create sending email to ${member.email}`); - await sendEmailWithMagicLink(member.email, options.emailType); - } return member; } @@ -150,6 +144,8 @@ module.exports = function ({ update, list, get, - destroy + destroy, + getStripeSubscriptions, + destroyStripeSubscriptions }; };