@feathersjs/authentication 5.0.0-pre.31 → 5.0.0-pre.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/lib/hooks/connection.js +0 -5
- package/lib/hooks/connection.js.map +1 -1
- package/lib/jwt.js +9 -6
- package/lib/jwt.js.map +1 -1
- package/package.json +11 -11
- package/src/hooks/connection.ts +0 -3
- package/src/jwt.ts +11 -7
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [5.0.0-pre.33](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.32...v5.0.0-pre.33) (2022-11-08)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @feathersjs/authentication
|
|
9
|
+
|
|
10
|
+
# [5.0.0-pre.32](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.31...v5.0.0-pre.32) (2022-10-26)
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
- **authentication:** Improve logout and disconnect connection handling ([#2813](https://github.com/feathersjs/feathers/issues/2813)) ([dd77379](https://github.com/feathersjs/feathers/commit/dd77379d8bdcd32d529bef912e672639e4899823))
|
|
15
|
+
|
|
6
16
|
# [5.0.0-pre.31](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.30...v5.0.0-pre.31) (2022-10-12)
|
|
7
17
|
|
|
8
18
|
### Features
|
package/lib/hooks/connection.js
CHANGED
|
@@ -1,15 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const omit_1 = __importDefault(require("lodash/omit"));
|
|
7
3
|
exports.default = (event) => async (context, next) => {
|
|
8
4
|
await next();
|
|
9
5
|
const { result, params: { connection } } = context;
|
|
10
6
|
if (connection) {
|
|
11
7
|
const service = context.service;
|
|
12
|
-
Object.assign(connection, (0, omit_1.default)(result, 'accessToken', 'authentication'));
|
|
13
8
|
await service.handleConnection(event, connection, result);
|
|
14
9
|
}
|
|
15
10
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/hooks/connection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/hooks/connection.ts"],"names":[],"mappings":";;AAGA,kBAAe,CAAC,KAAsB,EAAE,EAAE,CAAC,KAAK,EAAE,OAAoB,EAAE,IAAkB,EAAE,EAAE;IAC5F,MAAM,IAAI,EAAE,CAAA;IAEZ,MAAM,EACJ,MAAM,EACN,MAAM,EAAE,EAAE,UAAU,EAAE,EACvB,GAAG,OAAO,CAAA;IAEX,IAAI,UAAU,EAAE;QACd,MAAM,OAAO,GAAG,OAAO,CAAC,OAAwC,CAAA;QAEhE,MAAM,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAA;KAC1D;AACH,CAAC,CAAA"}
|
package/lib/jwt.js
CHANGED
|
@@ -31,18 +31,18 @@ class JWTStrategy extends strategy_1.AuthenticationBaseStrategy {
|
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
33
|
async handleConnection(event, connection, authResult) {
|
|
34
|
+
var _a;
|
|
34
35
|
const isValidLogout = event === 'logout' &&
|
|
35
36
|
connection.authentication &&
|
|
36
37
|
authResult &&
|
|
37
38
|
connection.authentication.accessToken === authResult.accessToken;
|
|
38
39
|
const { accessToken } = authResult || {};
|
|
40
|
+
const { entity } = this.configuration;
|
|
39
41
|
if (accessToken && event === 'login') {
|
|
40
42
|
debug('Adding authentication information to connection');
|
|
41
|
-
const { exp } = await this.authentication.verifyAccessToken(accessToken);
|
|
43
|
+
const { exp } = ((_a = authResult === null || authResult === void 0 ? void 0 : authResult.authentication) === null || _a === void 0 ? void 0 : _a.payload) || (await this.authentication.verifyAccessToken(accessToken));
|
|
42
44
|
// The time (in ms) until the token expires
|
|
43
45
|
const duration = exp * 1000 - Date.now();
|
|
44
|
-
// This may have to be a `logout` event but right now we don't want
|
|
45
|
-
// the whole context object lingering around until the timer is gone
|
|
46
46
|
const timer = long_timeout_1.default.setTimeout(() => this.app.emit('disconnect', connection), duration);
|
|
47
47
|
debug(`Registering connection expiration timer for ${duration}ms`);
|
|
48
48
|
long_timeout_1.default.clearTimeout(this.expirationTimers.get(connection));
|
|
@@ -52,12 +52,15 @@ class JWTStrategy extends strategy_1.AuthenticationBaseStrategy {
|
|
|
52
52
|
strategy: this.name,
|
|
53
53
|
accessToken
|
|
54
54
|
};
|
|
55
|
+
connection[entity] = authResult[entity];
|
|
55
56
|
}
|
|
56
57
|
else if (event === 'disconnect' || isValidLogout) {
|
|
57
58
|
debug('Removing authentication information and expiration timer from connection');
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
await new Promise((resolve) => process.nextTick(() => {
|
|
60
|
+
delete connection[entity];
|
|
61
|
+
delete connection.authentication;
|
|
62
|
+
resolve(connection);
|
|
63
|
+
}));
|
|
61
64
|
long_timeout_1.default.clearTimeout(this.expirationTimers.get(connection));
|
|
62
65
|
this.expirationTimers.delete(connection);
|
|
63
66
|
}
|
package/lib/jwt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwt.js","sourceRoot":"","sources":["../src/jwt.ts"],"names":[],"mappings":";;;;;;AAAA,yFAAyF;AACzF,uDAA8B;AAE9B,+CAAqD;AAErD,iDAAiD;AACjD,aAAa;AACb,gEAA6B;AAE7B,yCAAuD;AAGvD,MAAM,KAAK,GAAG,IAAA,qBAAW,EAAC,gCAAgC,CAAC,CAAA;AAC3D,MAAM,YAAY,GAAG,eAAe,CAAA;AAEpC,MAAa,WAAY,SAAQ,qCAA0B;IAA3D;;QACE,qBAAgB,GAAG,IAAI,OAAO,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"jwt.js","sourceRoot":"","sources":["../src/jwt.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@feathersjs/authentication",
|
|
3
3
|
"description": "Add Authentication to your FeathersJS app.",
|
|
4
|
-
"version": "5.0.0-pre.
|
|
4
|
+
"version": "5.0.0-pre.33",
|
|
5
5
|
"homepage": "https://feathersjs.com",
|
|
6
6
|
"main": "lib/",
|
|
7
7
|
"types": "lib/",
|
|
@@ -53,12 +53,12 @@
|
|
|
53
53
|
"access": "public"
|
|
54
54
|
},
|
|
55
55
|
"dependencies": {
|
|
56
|
-
"@feathersjs/commons": "^5.0.0-pre.
|
|
57
|
-
"@feathersjs/errors": "^5.0.0-pre.
|
|
58
|
-
"@feathersjs/feathers": "^5.0.0-pre.
|
|
56
|
+
"@feathersjs/commons": "^5.0.0-pre.33",
|
|
57
|
+
"@feathersjs/errors": "^5.0.0-pre.33",
|
|
58
|
+
"@feathersjs/feathers": "^5.0.0-pre.33",
|
|
59
59
|
"@feathersjs/hooks": "^0.7.5",
|
|
60
|
-
"@feathersjs/schema": "^5.0.0-pre.
|
|
61
|
-
"@feathersjs/transport-commons": "^5.0.0-pre.
|
|
60
|
+
"@feathersjs/schema": "^5.0.0-pre.33",
|
|
61
|
+
"@feathersjs/transport-commons": "^5.0.0-pre.33",
|
|
62
62
|
"@types/jsonwebtoken": "^8.5.9",
|
|
63
63
|
"jsonwebtoken": "^8.5.1",
|
|
64
64
|
"lodash": "^4.17.21",
|
|
@@ -66,15 +66,15 @@
|
|
|
66
66
|
"uuid": "^9.0.0"
|
|
67
67
|
},
|
|
68
68
|
"devDependencies": {
|
|
69
|
-
"@feathersjs/memory": "^5.0.0-pre.
|
|
70
|
-
"@types/lodash": "^4.14.
|
|
69
|
+
"@feathersjs/memory": "^5.0.0-pre.33",
|
|
70
|
+
"@types/lodash": "^4.14.187",
|
|
71
71
|
"@types/mocha": "^10.0.0",
|
|
72
|
-
"@types/node": "^18.
|
|
72
|
+
"@types/node": "^18.11.9",
|
|
73
73
|
"@types/uuid": "^8.3.4",
|
|
74
|
-
"mocha": "^10.
|
|
74
|
+
"mocha": "^10.1.0",
|
|
75
75
|
"shx": "^0.3.4",
|
|
76
76
|
"ts-node": "^10.9.1",
|
|
77
77
|
"typescript": "^4.8.4"
|
|
78
78
|
},
|
|
79
|
-
"gitHead": "
|
|
79
|
+
"gitHead": "89f516bcb1457e23a02c6212e9cd8bacc4d267d4"
|
|
80
80
|
}
|
package/src/hooks/connection.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { HookContext, NextFunction } from '@feathersjs/feathers'
|
|
2
|
-
import omit from 'lodash/omit'
|
|
3
2
|
import { AuthenticationBase, ConnectionEvent } from '../core'
|
|
4
3
|
|
|
5
4
|
export default (event: ConnectionEvent) => async (context: HookContext, next: NextFunction) => {
|
|
@@ -13,8 +12,6 @@ export default (event: ConnectionEvent) => async (context: HookContext, next: Ne
|
|
|
13
12
|
if (connection) {
|
|
14
13
|
const service = context.service as unknown as AuthenticationBase
|
|
15
14
|
|
|
16
|
-
Object.assign(connection, omit(result, 'accessToken', 'authentication'))
|
|
17
|
-
|
|
18
15
|
await service.handleConnection(event, connection, result)
|
|
19
16
|
}
|
|
20
17
|
}
|
package/src/jwt.ts
CHANGED
|
@@ -42,14 +42,14 @@ export class JWTStrategy extends AuthenticationBaseStrategy {
|
|
|
42
42
|
connection.authentication.accessToken === authResult.accessToken
|
|
43
43
|
|
|
44
44
|
const { accessToken } = authResult || {}
|
|
45
|
+
const { entity } = this.configuration
|
|
45
46
|
|
|
46
47
|
if (accessToken && event === 'login') {
|
|
47
48
|
debug('Adding authentication information to connection')
|
|
48
|
-
const { exp } =
|
|
49
|
+
const { exp } =
|
|
50
|
+
authResult?.authentication?.payload || (await this.authentication.verifyAccessToken(accessToken))
|
|
49
51
|
// The time (in ms) until the token expires
|
|
50
52
|
const duration = exp * 1000 - Date.now()
|
|
51
|
-
// This may have to be a `logout` event but right now we don't want
|
|
52
|
-
// the whole context object lingering around until the timer is gone
|
|
53
53
|
const timer = lt.setTimeout(() => this.app.emit('disconnect', connection), duration)
|
|
54
54
|
|
|
55
55
|
debug(`Registering connection expiration timer for ${duration}ms`)
|
|
@@ -61,13 +61,17 @@ export class JWTStrategy extends AuthenticationBaseStrategy {
|
|
|
61
61
|
strategy: this.name,
|
|
62
62
|
accessToken
|
|
63
63
|
}
|
|
64
|
+
connection[entity] = authResult[entity]
|
|
64
65
|
} else if (event === 'disconnect' || isValidLogout) {
|
|
65
66
|
debug('Removing authentication information and expiration timer from connection')
|
|
66
67
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
68
|
+
await new Promise((resolve) =>
|
|
69
|
+
process.nextTick(() => {
|
|
70
|
+
delete connection[entity]
|
|
71
|
+
delete connection.authentication
|
|
72
|
+
resolve(connection)
|
|
73
|
+
})
|
|
74
|
+
)
|
|
71
75
|
|
|
72
76
|
lt.clearTimeout(this.expirationTimers.get(connection))
|
|
73
77
|
this.expirationTimers.delete(connection)
|