From fc0e97593b31ac0e06e239786defbfe0dab45fb3 Mon Sep 17 00:00:00 2001 From: Fabien O'Carroll Date: Thu, 28 May 2020 12:40:51 +0200 Subject: [PATCH] Added membersStripeConnect controller auth method no-issue In order to issue a redirect we need access to the "raw" req/res objects, which is why we must return the function which gets access to them. The members service is used to create the auth url and to update the users session. --- core/server/api/canary/index.js | 4 ++++ core/server/api/canary/membersStripeConnect.js | 18 ++++++++++++++++++ core/server/web/api/canary/admin/routes.js | 2 ++ 3 files changed, 24 insertions(+) create mode 100644 core/server/api/canary/membersStripeConnect.js diff --git a/core/server/api/canary/index.js b/core/server/api/canary/index.js index cc7d5bf4fc..ceb4206e09 100644 --- a/core/server/api/canary/index.js +++ b/core/server/api/canary/index.js @@ -71,6 +71,10 @@ module.exports = { return shared.pipeline(require('./settings'), localUtils); }, + get membersStripeConnect() { + return shared.pipeline(require('./membersStripeConnect'), localUtils); + }, + get members() { return shared.pipeline(require('./members'), localUtils); }, diff --git a/core/server/api/canary/membersStripeConnect.js b/core/server/api/canary/membersStripeConnect.js new file mode 100644 index 0000000000..6ef3462d62 --- /dev/null +++ b/core/server/api/canary/membersStripeConnect.js @@ -0,0 +1,18 @@ +const membersService = require('../../services/members'); + +module.exports = { + docName: 'members_stripe_connect', + auth: { + permissions: true, + query(frame) { + // This is something you have to do if you want to use the "framework" with access to the raw req/res + frame.response = async function (req, res) { + function setSessionProp(prop, val) { + req.session[prop] = val; + } + const stripeConnectAuthURL = await membersService.stripeConnect.getStripeConnectOAuthUrl(setSessionProp); + return res.redirect(stripeConnectAuthURL); + }; + } + } +}; diff --git a/core/server/web/api/canary/admin/routes.js b/core/server/web/api/canary/admin/routes.js index 3cabd21d3e..06fa13d9e2 100644 --- a/core/server/web/api/canary/admin/routes.js +++ b/core/server/web/api/canary/admin/routes.js @@ -97,6 +97,8 @@ module.exports = function apiRoutes() { http(apiCanary.members.importCSV) ); + router.get('/members/stripe_connect', shared.middlewares.labs.members, mw.authAdminApi, http(apiCanary.membersStripeConnect.auth)); + router.get('/members/:id', shared.middlewares.labs.members, mw.authAdminApi, http(apiCanary.members.read)); router.put('/members/:id', shared.middlewares.labs.members, mw.authAdminApi, http(apiCanary.members.edit)); router.del('/members/:id', shared.middlewares.labs.members, mw.authAdminApi, http(apiCanary.members.destroy));