From 192e577300a7ad8faa05d0ee25744d80e077fbbf Mon Sep 17 00:00:00 2001 From: James Date: Sun, 19 Apr 2020 12:29:16 -0400 Subject: [PATCH] fixes bugs within refresh handler --- .vscode/launch.json | 13 +++++++++++++ package.json | 3 ++- src/client/components/data/User.js | 1 + src/users/operations/refresh.js | 18 ++++++++++-------- src/users/requestHandlers/refresh.js | 1 + src/users/requestHandlers/update.js | 1 + src/users/users.spec.js | 12 ++++++------ 7 files changed, 34 insertions(+), 15 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index f6c24e324e..9278c061fc 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -4,6 +4,19 @@ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ + { + "name": "Debug Jest Tests", + "type": "node", + "request": "launch", + "runtimeArgs": [ + "--inspect-brk", + "${workspaceRoot}/node_modules/.bin/jest", + "--runInBand" + ], + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "port": 9229 + }, { "type": "node", "request": "launch", diff --git a/package.json b/package.json index 21e1149a5a..b2d830d8d3 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,8 @@ "cov": "npm run core:build && node ./node_modules/jest/bin/jest.js src/tests --coverage", "dev": "nodemon demo/server.js", "server": "node demo/server.js", - "lint": "eslint **/*.js" + "lint": "eslint **/*.js", + "debug:test:int": "node --inspect-brk node_modules/.bin/jest --runInBand" }, "bin": { "payload": "./src/bin/index.js" diff --git a/src/client/components/data/User.js b/src/client/components/data/User.js index ee32ccdb81..4192eb5a22 100644 --- a/src/client/components/data/User.js +++ b/src/client/components/data/User.js @@ -37,6 +37,7 @@ const UserProvider = ({ children }) => { if (request.status === 200) { const json = await request.json(); + console.log('refreshedToken', json.refreshedToken); setToken(json.refreshedToken); } }, 1000); diff --git a/src/users/operations/refresh.js b/src/users/operations/refresh.js index 4559fba868..83ee4b59e0 100644 --- a/src/users/operations/refresh.js +++ b/src/users/operations/refresh.js @@ -14,10 +14,10 @@ const refresh = async (args) => { // 1. Execute before refresh hook // ///////////////////////////////////// - const beforeRefreshHook = args.config.hooks && args.config.hooks.beforeRefresh; + const { beforeRefresh } = args.config.hooks; - if (typeof beforeRefreshHook === 'function') { - options = await beforeRefreshHook(options); + if (typeof beforeRefresh === 'function') { + options = await beforeRefresh(options); } // ///////////////////////////////////// @@ -29,17 +29,19 @@ const refresh = async (args) => { opts.expiresIn = options.config.auth.tokenExpiration; const token = options.authorization.replace('JWT ', ''); - jwt.verify(token, secret, {}); - const refreshedToken = jwt.sign(token, secret); + const payload = jwt.verify(token, secret, {}); + delete payload.iat; + delete payload.exp; + const refreshedToken = jwt.sign(payload, secret, opts); // ///////////////////////////////////// // 3. Execute after login hook // ///////////////////////////////////// - const afterRefreshHook = args.config.hooks && args.config.hooks.afterRefresh; + const { afterRefresh } = args.config.hooks; - if (typeof afterRefreshHook === 'function') { - await afterRefreshHook(options, refreshedToken); + if (typeof afterRefresh === 'function') { + await afterRefresh(options, refreshedToken); } // ///////////////////////////////////// diff --git a/src/users/requestHandlers/refresh.js b/src/users/requestHandlers/refresh.js index 2ea1d949cb..7fe75dab12 100644 --- a/src/users/requestHandlers/refresh.js +++ b/src/users/requestHandlers/refresh.js @@ -8,6 +8,7 @@ const refreshHandler = async (req, res) => { config: req.collection, api: 'REST', authorization: req.headers.authorization, + user: req.user, }); return res.status(200).json({ diff --git a/src/users/requestHandlers/update.js b/src/users/requestHandlers/update.js index 9af6feaf16..12a62db8f4 100644 --- a/src/users/requestHandlers/update.js +++ b/src/users/requestHandlers/update.js @@ -13,6 +13,7 @@ const updateHandler = async (req, res) => { api: 'REST', locale: req.locale, fallbackLocale: req.fallbackLocale, + user: req.user, }); return res.status(httpStatus.OK).json({ diff --git a/src/users/users.spec.js b/src/users/users.spec.js index e851530397..ab7bac936f 100644 --- a/src/users/users.spec.js +++ b/src/users/users.spec.js @@ -8,12 +8,12 @@ const { email, password } = require('../tests/credentials'); const config = require('../../demo/payload.config'); +const url = config.serverURL; +const usernameField = config.user.auth.useAsUsername; + +let token = null; + describe('Users REST API', () => { - const url = config.serverURL; - const usernameField = config.user.auth.useAsUsername; - - let token = null; - it('should prevent registering a first user', async () => { const response = await fetch(`${url}/api/first-register`, { body: JSON.stringify({ @@ -76,7 +76,7 @@ describe('Users REST API', () => { expect(response.status).toBe(200); expect(data.token).not.toBeNull(); - ({ token } = data); + // token = data.refreshedToken; }); it('should allow a user to be created', async () => {