diff --git a/middleware/withShop.js b/middleware/withShop.js index 4f69cbe..a218a3e 100644 --- a/middleware/withShop.js +++ b/middleware/withShop.js @@ -1,18 +1,27 @@ module.exports = function withShop({ authBaseUrl } = {}) { return function verifyRequest(request, response, next) { - const { query: { shop }, session, baseUrl } = request; + const { query = {}, session = {}, baseUrl } = request; + const { accessToken } = session; + const shop = getShopFromReferrer(request.get('referer')) || query.shop; - if (session && session.accessToken) { + if (accessToken && session.shop === shop) { next(); return; } if (shop) { - response.redirect(`${authBaseUrl || baseUrl}/auth?shop=${shop}`); + response.redirect(`${authBaseUrl || baseUrl}/auth/shopify?shop=${shop}`); return; } response.redirect('/install'); - return; }; + + function getShopFromReferrer(referrer) { + if (!referrer) { + return; + } + const result = referrer.match(/shop=([^&]+)/); + return result && result[1]; + } };