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

Supported products include for Members Admin API

refs https://github.com/TryGhost/Team/issues/616

This allows us to check which products a Member has access to, without
having to check the subscriptions array.
This commit is contained in:
Fabien O'Carroll 2021-04-20 11:33:35 +01:00
parent d7b6a48226
commit 050580e5ab
2 changed files with 16 additions and 2 deletions

View file

@ -10,7 +10,7 @@ const settingsCache = require('../../services/settings/cache');
const {i18n} = require('../../lib/common'); const {i18n} = require('../../lib/common');
const _ = require('lodash'); const _ = require('lodash');
const allowedIncludes = ['email_recipients']; const allowedIncludes = ['email_recipients', 'products'];
module.exports = { module.exports = {
docName: 'members', docName: 'members',

View file

@ -94,7 +94,7 @@ function serializeMember(member, options) {
} }
const subscriptions = json.subscriptions || []; const subscriptions = json.subscriptions || [];
return { const serialized = {
id: json.id, id: json.id,
uuid: json.uuid, uuid: json.uuid,
email: json.email, email: json.email,
@ -114,6 +114,12 @@ function serializeMember(member, options) {
email_recipients: json.email_recipients, email_recipients: json.email_recipients,
status: json.status status: json.status
}; };
if (json.products) {
serialized.products = json.products;
}
return serialized;
} }
/** /**
@ -154,6 +160,7 @@ function createSerializer(debugString, serialize) {
* @prop {string} updated_at * @prop {string} updated_at
* @prop {string[]} labels * @prop {string[]} labels
* @prop {SerializedMemberStripeSubscription[]} subscriptions * @prop {SerializedMemberStripeSubscription[]} subscriptions
* @prop {SerializedMemberProduct[]=} products
* @prop {string} avatar_image * @prop {string} avatar_image
* @prop {boolean} comped * @prop {boolean} comped
* @prop {number} email_count * @prop {number} email_count
@ -163,6 +170,13 @@ function createSerializer(debugString, serialize) {
* @prop {'free'|'paid'} status * @prop {'free'|'paid'} status
*/ */
/**
* @typedef {Object} SerializedMemberProduct
* @prop {string} id
* @prop {string} name
* @prop {string} slug
*/
/** /**
* @typedef {Object} SerializedMemberStripeData * @typedef {Object} SerializedMemberStripeData
* @prop {SerializedMemberStripeSubscription[]} subscriptions * @prop {SerializedMemberStripeSubscription[]} subscriptions