mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-03-11 02:12:21 -05:00
Added Offers service
refs https://github.com/TryGhost/Team/issues/1083 This adds the Offers service which will allow us to build out an Admin API to communicate with it. As well as wiring up the redirects to the site app.
This commit is contained in:
parent
68de391c98
commit
3742a4afb7
5 changed files with 68 additions and 0 deletions
|
@ -191,6 +191,7 @@ async function initServices({config}) {
|
|||
debug('Begin: Services');
|
||||
const stripe = require('./server/services/stripe');
|
||||
const members = require('./server/services/members');
|
||||
const offers = require('./server/services/offers');
|
||||
const permissions = require('./server/services/permissions');
|
||||
const xmlrpc = require('./server/services/xmlrpc');
|
||||
const slack = require('./server/services/slack');
|
||||
|
@ -212,6 +213,7 @@ async function initServices({config}) {
|
|||
|
||||
await Promise.all([
|
||||
members.init(),
|
||||
offers.init(),
|
||||
permissions.init(),
|
||||
xmlrpc.listen(),
|
||||
slack.listen(),
|
||||
|
|
1
core/server/services/offers/index.js
Normal file
1
core/server/services/offers/index.js
Normal file
|
@ -0,0 +1 @@
|
|||
module.exports = require('./service');
|
53
core/server/services/offers/service.js
Normal file
53
core/server/services/offers/service.js
Normal file
|
@ -0,0 +1,53 @@
|
|||
const labs = require('../../../shared/labs');
|
||||
const events = require('../../lib/common/events');
|
||||
|
||||
const DynamicRedirectManager = require('@tryghost/express-dynamic-redirects');
|
||||
const OffersModule = require('@tryghost/members-offers');
|
||||
|
||||
const stripeService = require('../stripe');
|
||||
|
||||
const config = require('../../../shared/config');
|
||||
const urlUtils = require('../../../shared/url-utils');
|
||||
const models = require('../../models');
|
||||
|
||||
const redirectManager = new DynamicRedirectManager({
|
||||
permanentMaxAge: config.get('caching:customRedirects:maxAge')
|
||||
}, urlUtils);
|
||||
|
||||
module.exports = {
|
||||
async init() {
|
||||
const offersModule = OffersModule.create({
|
||||
OfferModel: models.Offer,
|
||||
redirectManager: redirectManager,
|
||||
stripeAPIService: stripeService.api
|
||||
});
|
||||
|
||||
this.api = offersModule.api;
|
||||
|
||||
if (labs.isSet('offers')) {
|
||||
// handles setting up redirects
|
||||
await offersModule.init();
|
||||
}
|
||||
|
||||
// TODO: Delete after GA
|
||||
let offersEnabled = labs.isSet('offers');
|
||||
events.on('settings.labs.edited', async () => {
|
||||
if (labs.isSet('offers') !== offersEnabled) {
|
||||
offersEnabled = labs.isSet('offers');
|
||||
|
||||
if (offersEnabled) {
|
||||
const offers = await this.api.listOffers();
|
||||
for (const offer of offers) {
|
||||
redirectManager.addRedirect(`/${offer.code}`, `/#/portal/offers/${offer.id}`, {permanent: false});
|
||||
}
|
||||
} else {
|
||||
redirectManager.removeAllRedirects();
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
api: null,
|
||||
|
||||
middleware: redirectManager.handleRequest
|
||||
};
|
|
@ -64,6 +64,7 @@
|
|||
"@tryghost/email-analytics-provider-mailgun": "1.0.2",
|
||||
"@tryghost/email-analytics-service": "1.0.2",
|
||||
"@tryghost/errors": "0.2.16",
|
||||
"@tryghost/express-dynamic-redirects": "^0.1.0",
|
||||
"@tryghost/helpers": "1.1.52",
|
||||
"@tryghost/image-transform": "1.0.16",
|
||||
"@tryghost/job-manager": "0.8.10",
|
||||
|
@ -78,6 +79,7 @@
|
|||
"@tryghost/members-api": "2.0.0",
|
||||
"@tryghost/members-csv": "1.1.7",
|
||||
"@tryghost/members-importer": "0.3.3",
|
||||
"@tryghost/members-offers": "0.2.1",
|
||||
"@tryghost/members-ssr": "1.0.14",
|
||||
"@tryghost/mw-session-from-token": "0.1.25",
|
||||
"@tryghost/nodemailer": "0.3.3",
|
||||
|
|
10
yarn.lock
10
yarn.lock
|
@ -1319,6 +1319,11 @@
|
|||
"@tryghost/ignition-errors" "^0.1.0"
|
||||
lodash "^4.17.21"
|
||||
|
||||
"@tryghost/express-dynamic-redirects@^0.1.0":
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@tryghost/express-dynamic-redirects/-/express-dynamic-redirects-0.1.0.tgz#85c6caa2887034ea8064a40ca0622a87e4000c4e"
|
||||
integrity sha512-C9594LRjH3wsAWUoMCb5sZg/1Ifrn/O2aQeWQeBDgqUWAScmtUuIpkPNTRrq0cZ1Yv4ig5gWMKv4YSe5TdAVdA==
|
||||
|
||||
"@tryghost/helpers@1.1.52":
|
||||
version "1.1.52"
|
||||
resolved "https://registry.yarnpkg.com/@tryghost/helpers/-/helpers-1.1.52.tgz#e30bd367ea62d1b27e59abfa8e8ed8c3e072b74e"
|
||||
|
@ -1522,6 +1527,11 @@
|
|||
"@tryghost/tpl" "^0.1.3"
|
||||
moment-timezone "0.5.23"
|
||||
|
||||
"@tryghost/members-offers@0.2.1":
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@tryghost/members-offers/-/members-offers-0.2.1.tgz#e6070df6156b9c73dd73ef7b37cef30c0b5a3046"
|
||||
integrity sha512-FLiwWBHXo4Rt9Ei1liZYnfkb23NyvyeAdFE2GoIPVIoRrAq+Di19Df44QhAt+ixcrpS9ShNOwmJHYoySkYEgDA==
|
||||
|
||||
"@tryghost/members-ssr@1.0.14":
|
||||
version "1.0.14"
|
||||
resolved "https://registry.yarnpkg.com/@tryghost/members-ssr/-/members-ssr-1.0.14.tgz#8de4aca6c788f95aad52386f055ff2f5b1c7559c"
|
||||
|
|
Loading…
Add table
Reference in a new issue