mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-03-11 02:12:21 -05:00
Moved members API out of backend
This commit is contained in:
parent
d7c60d1bd8
commit
fa4dfa1b21
6 changed files with 33 additions and 18 deletions
|
@ -64,13 +64,11 @@
|
|||
"all": ["v2", "v3", "canary"],
|
||||
"canary": {
|
||||
"admin": "canary/admin",
|
||||
"content": "canary/content",
|
||||
"members": "canary/members"
|
||||
"content": "canary/content"
|
||||
},
|
||||
"v3": {
|
||||
"admin": "v3/admin",
|
||||
"content": "v3/content",
|
||||
"members": "v3/members"
|
||||
"content": "v3/content"
|
||||
},
|
||||
"v2": {
|
||||
"admin": "v2/admin",
|
||||
|
|
|
@ -23,7 +23,7 @@ Array.prototype.forEach.call(document.querySelectorAll('form[data-members-form]'
|
|||
}
|
||||
|
||||
form.classList.add('loading');
|
||||
fetch('{{admin-url}}/api/canary/members/send-magic-link/', {
|
||||
fetch('{{blog-url}}/members/api/send-magic-link/', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
|
@ -81,7 +81,7 @@ Array.prototype.forEach.call(document.querySelectorAll('[data-members-plan]'), f
|
|||
}
|
||||
return res.text();
|
||||
}).then(function (identity) {
|
||||
return fetch('{{admin-url}}/api/canary/members/create-stripe-checkout-session/', {
|
||||
return fetch('{{blog-url}}/members/api/create-stripe-checkout-session/', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
|
@ -151,7 +151,7 @@ Array.prototype.forEach.call(document.querySelectorAll('[data-members-edit-billi
|
|||
}
|
||||
return res.text();
|
||||
}).then(function (identity) {
|
||||
return fetch('{{admin-url}}/api/canary/members/create-stripe-setup-session/', {
|
||||
return fetch('{{blog-url}}/members/api/create-stripe-setup-session/', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
|
@ -233,7 +233,7 @@ Array.prototype.forEach.call(document.querySelectorAll('[data-members-cancel-sub
|
|||
|
||||
return res.text();
|
||||
}).then(function (identity) {
|
||||
return fetch('{{admin-url}}/api/canary/members/subscriptions/' + subscriptionId + '/', {
|
||||
return fetch('{{blog-url}}/members/api/subscriptions/' + subscriptionId + '/', {
|
||||
method: 'PUT',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
|
@ -283,7 +283,7 @@ Array.prototype.forEach.call(document.querySelectorAll('[data-members-continue-s
|
|||
|
||||
return res.text();
|
||||
}).then(function (identity) {
|
||||
return fetch('{{admin-url}}/api/canary/members/subscriptions/' + subscriptionId + '/', {
|
||||
return fetch('{{blog-url}}/members/api/subscriptions/' + subscriptionId + '/', {
|
||||
method: 'PUT',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
|
|
2
core/server/public/members.min.js
vendored
2
core/server/public/members.min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -13,11 +13,9 @@ module.exports = function setupApiApp() {
|
|||
|
||||
apiApp.use(urlUtils.getVersionPath({version: 'v3', type: 'content'}), require('./canary/content/app')());
|
||||
apiApp.use(urlUtils.getVersionPath({version: 'v3', type: 'admin'}), require('./canary/admin/app')());
|
||||
apiApp.use(urlUtils.getVersionPath({version: 'v3', type: 'members'}), require('./canary/members/app')());
|
||||
|
||||
apiApp.use(urlUtils.getVersionPath({version: 'canary', type: 'content'}), require('./canary/content/app')());
|
||||
apiApp.use(urlUtils.getVersionPath({version: 'canary', type: 'admin'}), require('./canary/admin/app')());
|
||||
apiApp.use(urlUtils.getVersionPath({version: 'canary', type: 'members'}), require('./canary/members/app')());
|
||||
|
||||
// Error handling for requests to non-existent API versions
|
||||
apiApp.use(errorHandler.resourceNotFound);
|
||||
|
|
|
@ -1,14 +1,23 @@
|
|||
const debug = require('ghost-ignition').debug('web:members:app');
|
||||
const {URL} = require('url');
|
||||
const cors = require('cors');
|
||||
const express = require('../../../shared/express');
|
||||
|
||||
const {middleware} = require('../../services/members');
|
||||
const urlUtils = require('../../lib/url-utils');
|
||||
const membersService = require('../../services/members');
|
||||
const middleware = membersService.middleware;
|
||||
const shared = require('../shared');
|
||||
|
||||
module.exports = function setupMembersApp() {
|
||||
debug('Members setup start');
|
||||
|
||||
debug('Members App setup start');
|
||||
const membersApp = express();
|
||||
|
||||
// Entire app is behind labs flag
|
||||
membersApp.use(shared.middlewares.labs.members);
|
||||
|
||||
// Support CORS for requests from the frontend
|
||||
const siteUrl = new URL(urlUtils.getSiteUrl());
|
||||
membersApp.use(cors(siteUrl.origin));
|
||||
|
||||
// Currently global handling for signing in with ?token= magiclinks
|
||||
membersApp.use(middleware.createSessionFromMagicLink);
|
||||
|
||||
|
@ -19,5 +28,17 @@ module.exports = function setupMembersApp() {
|
|||
membersApp.delete('/ssr', shared.middlewares.labs.members, middleware.deleteSession);
|
||||
membersApp.post('/webhooks/stripe', shared.middlewares.labs.members, middleware.stripeWebhooks);
|
||||
|
||||
// NOTE: this is wrapped in a function to ensure we always go via the getter
|
||||
membersApp.post('/api/send-magic-link', (req, res, next) => membersService.api.middleware.sendMagicLink(req, res, next));
|
||||
membersApp.post('/api/create-stripe-checkout-session', (req, res, next) => membersService.api.middleware.createCheckoutSession(req, res, next));
|
||||
membersApp.post('/api/create-stripe-setup-session', (req, res, next) => membersService.api.middleware.createCheckoutSetupSession(req, res, next));
|
||||
membersApp.put('/api/subscriptions/:id', (req, res, next) => membersService.api.middleware.updateSubscription(req, res, next));
|
||||
|
||||
// API error handling
|
||||
membersApp.use(shared.middlewares.errorHandler.resourceNotFound);
|
||||
membersApp.use(shared.middlewares.errorHandler.handleJSONResponseV2);
|
||||
|
||||
debug('Members App setup end');
|
||||
|
||||
return membersApp;
|
||||
};
|
||||
|
|
|
@ -11,7 +11,6 @@ function createPublicFileMiddleware(file, type, maxAge) {
|
|||
const publicFilePath = config.get('paths').publicFilePath;
|
||||
const filePath = file.match(/^public/) ? path.join(publicFilePath, file.replace(/^public/, '')) : path.join(publicFilePath, file);
|
||||
const blogRegex = /(\{\{blog-url\}\})/g;
|
||||
const adminRegex = /(\{\{admin-url\}\})/g;
|
||||
|
||||
return function servePublicFile(req, res, next) {
|
||||
if (content) {
|
||||
|
@ -47,7 +46,6 @@ function createPublicFileMiddleware(file, type, maxAge) {
|
|||
|
||||
if (type === 'text/xsl' || type === 'text/plain' || type === 'application/javascript') {
|
||||
str = str.replace(blogRegex, urlUtils.urlFor('home', true).replace(/\/$/, ''));
|
||||
str = str.replace(adminRegex, urlUtils.urlFor('admin', true).replace(/\/$/, ''));
|
||||
}
|
||||
|
||||
content = {
|
||||
|
|
Loading…
Add table
Reference in a new issue