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

Separated members token mw from members session mw

- The existing createSessionFromToken was actually doing two things behind the scenes
   1. Handling the ?token from the magic link and creating an actual session (mounted globally, which is not necessary)
   2. Loading an existing session so that a member is logged in to the frontent
- IMO 1. is part of members, and doesn't need to be global
- IMO 2. is part of the frontend. It does need to be global but should NOT be hidden away behind the token middleware, as it wasn't clear what this was doing
This commit is contained in:
Hannah Wolfe 2020-04-29 19:13:45 +01:00
parent f10b4394dc
commit 0e1ae7c2af
2 changed files with 10 additions and 4 deletions

View file

@ -93,11 +93,14 @@ const decorateResponse = function (req, res, next) {
next();
};
// @TODO only loads this stuff if members is enabled
// @TODO only load this stuff if members is enabled
// Set req.member & res.locals.member if a cookie is set
module.exports = {
createSessionFromToken: [
memberSession: [
getMemberDataFromSession,
decorateResponse
],
createSessionFromMagicLink: [
exchangeTokenForSession,
decorateResponse
],

View file

@ -137,8 +137,11 @@ module.exports = function setupSiteApp(options = {}) {
siteApp.delete('/members/ssr', shared.middlewares.labs.members, membersMiddleware.deleteSession);
siteApp.post('/members/webhooks/stripe', shared.middlewares.labs.members, membersMiddleware.stripeWebhooks);
// Currently global handling for signing in with ?token=
siteApp.use(membersMiddleware.createSessionFromToken);
// Currently global handling for signing in with ?token= magiclinks
siteApp.use(membersMiddleware.createSessionFromMagicLink);
// Global handling for member session, ensures a member is logged in to the frontend
siteApp.use(membersMiddleware.memberSession);
// Theme middleware
// This should happen AFTER any shared assets are served, as it only changes things to do with templates