Skip to content

Commit 1405eb8

Browse files
committed
Merge branch 'master' into feature/token-session
2 parents 40b10c2 + 8cd6265 commit 1405eb8

File tree

8 files changed

+63
-42
lines changed

8 files changed

+63
-42
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@
3636
"license": "MIT",
3737
"devDependencies": {
3838
"@accounts/tslint-config-accounts": "0.0.6",
39-
"@types/jest": "22.1.4",
40-
"@types/node": "8.0.47",
39+
"@types/jest": "22.2.0",
40+
"@types/node": "9.4.6",
4141
"codecov": "3.0.0",
4242
"flow-bin": "0.66.0",
4343
"jest": "22.4.2",

packages/client/__tests__/accounts-client.ts

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -340,14 +340,41 @@ describe('Accounts', () => {
340340
}
341341
});
342342

343+
it('should do nothing if tokens are still valid', async () => {
344+
Accounts.config({}, mockTransport);
345+
const accessToken = jwt.sign({ data: 'oldRefreshToken' }, 'secret', {
346+
expiresIn: 10,
347+
});
348+
const refreshToken = jwt.sign({ data: 'oldRefreshToken' }, 'secret', {
349+
expiresIn: '1d',
350+
});
351+
const oldTokens = {
352+
accessToken,
353+
refreshToken,
354+
};
355+
Accounts.instance.storeTokens(oldTokens);
356+
// tslint:disable-next-line no-string-literal
357+
Accounts.instance['store'].dispatch(setTokens(oldTokens));
358+
await Accounts.refreshSession();
359+
expect(localStorage.getItem('accounts:accessToken')).toEqual(accessToken);
360+
expect(localStorage.getItem('accounts:refreshToken')).toEqual(
361+
refreshToken
362+
);
363+
});
364+
343365
it('requests a new token pair, sets the tokens and the user', async () => {
344366
Accounts.config({}, mockTransport);
367+
const accessToken = jwt.sign({ data: 'oldRefreshToken' }, 'secret', {
368+
expiresIn: -10,
369+
});
370+
const refreshToken = jwt.sign({ data: 'oldRefreshToken' }, 'secret', {
371+
expiresIn: '1d',
372+
});
345373
const oldTokens = {
346-
accessToken: 'oldAccessToken',
347-
refreshToken: jwt.sign({ data: 'oldRefreshToken' }, 'secret', {
348-
expiresIn: '1d',
349-
}),
374+
accessToken,
375+
refreshToken,
350376
};
377+
Accounts.instance.storeTokens(oldTokens);
351378
// tslint:disable-next-line no-string-literal
352379
Accounts.instance['store'].dispatch(setTokens(oldTokens));
353380
await Accounts.refreshSession();

packages/client/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
"author": "Tim Mikeladze",
4949
"license": "MIT",
5050
"devDependencies": {
51-
"@types/jest": "22.1.4",
51+
"@types/jest": "22.2.0",
5252
"jest": "22.4.2",
5353
"jsonwebtoken": "8.2.0",
5454
"lerna": "2.9.0",

packages/client/src/accounts-client.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -251,22 +251,25 @@ export class AccountsClient {
251251
if (accessToken && refreshToken) {
252252
try {
253253
this.store.dispatch(loggingIn(true));
254-
const decodedRefreshToken = jwtDecode(refreshToken);
255254
const currentTime = Date.now() / 1000;
256-
// Refresh token is expired, user must sign back in
257-
if (decodedRefreshToken.exp < currentTime) {
258-
this.clearTokens();
259-
} else {
255+
256+
const decodedAccessToken = jwtDecode(accessToken);
257+
const decodedRefreshToken = jwtDecode(refreshToken);
258+
// See if accessToken is expired
259+
if (decodedAccessToken.exp < currentTime) {
260260
// Request a new token pair
261261
const refreshedSession: LoginReturnType = await this.transport.refreshTokens(
262262
accessToken,
263263
refreshToken
264264
);
265-
this.store.dispatch(loggingIn(false));
266265

267266
await this.storeTokens(refreshedSession.tokens);
268267
this.store.dispatch(setTokens(refreshedSession.tokens));
268+
} else if (decodedRefreshToken.exp < currentTime) {
269+
// Refresh token is expired, user must sign back in
270+
this.clearTokens();
269271
}
272+
this.store.dispatch(loggingIn(false));
270273
} catch (err) {
271274
this.store.dispatch(loggingIn(false));
272275
this.clearTokens();

packages/client/yarn.lock

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616
esutils "^2.0.2"
1717
js-tokens "^3.0.0"
1818

19-
"@types/jest@22.1.4":
20-
version "22.1.4"
21-
resolved "https://registry.yarnpkg.com/@types/jest/-/jest-22.1.4.tgz#5c0c06a9bb495c67e0a78002a952f151e2ae58a1"
19+
"@types/jest@22.2.0":
20+
version "22.2.0"
21+
resolved "https://registry.yarnpkg.com/@types/jest/-/jest-22.2.0.tgz#55ce83139f7ad1b48b414c3927746614c6963c0f"
2222

2323
JSONStream@^1.0.4:
2424
version "1.3.2"

packages/server/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@
4949
"@accounts/common": "^0.1.0-beta.2",
5050
"babel-polyfill": "^6.23.0",
5151
"bcryptjs": "^2.4.0",
52-
"crypto": "^0.0.3",
5352
"jsonwebtoken": "^8.0.0",
5453
"jwt-decode": "^2.1.0",
5554
"lodash": "^4.16.4"

packages/server/yarn.lock

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
resolved "https://registry.yarnpkg.com/@types/jwt-decode/-/jwt-decode-2.2.1.tgz#afdf5c527fcfccbd4009b5fd02d1e18241f2d2f2"
1414

1515
"@types/node@*":
16-
version "8.0.47"
17-
resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.47.tgz#968e596f91acd59069054558a00708c445ca30c2"
16+
version "9.4.6"
17+
resolved "https://registry.yarnpkg.com/@types/node/-/node-9.4.6.tgz#d8176d864ee48753d053783e4e463aec86b8d82e"
1818

1919
babel-polyfill@^6.23.0:
2020
version "6.26.0"
@@ -58,17 +58,9 @@ [email protected]:
5858
version "0.0.1"
5959
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
6060

61-
core-js@^2.4.0:
62-
version "2.4.1"
63-
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e"
64-
65-
core-js@^2.5.0:
66-
version "2.5.1"
67-
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b"
68-
69-
crypto@^0.0.3:
70-
version "0.0.3"
71-
resolved "https://registry.yarnpkg.com/crypto/-/crypto-0.0.3.tgz#470a81b86be4c5ee17acc8207a1f5315ae20dbb0"
61+
core-js@^2.4.0, core-js@^2.5.0:
62+
version "2.5.3"
63+
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.3.tgz#8acc38345824f16d8365b7c9b4259168e8ed603e"
7264

7365
7466
version "1.0.9"
@@ -168,8 +160,8 @@ lodash.once@^4.0.0:
168160
resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac"
169161

170162
lodash@^4.16.4:
171-
version "4.17.4"
172-
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
163+
version "4.17.5"
164+
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511"
173165

174166
minimatch@^3.0.4:
175167
version "3.0.4"
@@ -196,8 +188,8 @@ regenerator-runtime@^0.10.5:
196188
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658"
197189

198190
regenerator-runtime@^0.11.0:
199-
version "0.11.0"
200-
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1"
191+
version "0.11.1"
192+
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
201193

202194
203195
version "2.6.2"
@@ -206,8 +198,8 @@ [email protected]:
206198
glob "^7.0.5"
207199

208200
safe-buffer@^5.0.1:
209-
version "5.0.1"
210-
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7"
201+
version "5.1.1"
202+
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
211203

212204
wrappy@1:
213205
version "1.0.2"

yarn.lock

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@
2323
esutils "^2.0.2"
2424
js-tokens "^3.0.0"
2525

26-
"@types/jest@22.1.4":
27-
version "22.1.4"
28-
resolved "https://registry.yarnpkg.com/@types/jest/-/jest-22.1.4.tgz#5c0c06a9bb495c67e0a78002a952f151e2ae58a1"
26+
"@types/jest@22.2.0":
27+
version "22.2.0"
28+
resolved "https://registry.yarnpkg.com/@types/jest/-/jest-22.2.0.tgz#55ce83139f7ad1b48b414c3927746614c6963c0f"
2929

30-
"@types/node@8.0.47":
31-
version "8.0.47"
32-
resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.47.tgz#968e596f91acd59069054558a00708c445ca30c2"
30+
"@types/node@9.4.6":
31+
version "9.4.6"
32+
resolved "https://registry.yarnpkg.com/@types/node/-/node-9.4.6.tgz#d8176d864ee48753d053783e4e463aec86b8d82e"
3333

3434
JSONStream@^1.0.4:
3535
version "1.3.2"

0 commit comments

Comments
 (0)