@furystack/rest-service 5.0.0 → 5.0.4
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.
|
@@ -12,6 +12,8 @@ export declare class HttpUserContext {
|
|
|
12
12
|
private readonly authenticator;
|
|
13
13
|
getUserStore: () => import("@furystack/core").PhysicalStore<User, keyof User>;
|
|
14
14
|
getSessionStore: () => import("@furystack/core").PhysicalStore<DefaultSession, keyof DefaultSession>;
|
|
15
|
+
private getUserByName;
|
|
16
|
+
private getSessionById;
|
|
15
17
|
private user?;
|
|
16
18
|
/**
|
|
17
19
|
* @param request The request to be authenticated
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-user-context.d.ts","sourceRoot":"","sources":["../src/http-user-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAA;AACtD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAGpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAA;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,qBAAqB,EAAwB,MAAM,qBAAqB,CAAA;AAEjF;;GAEG;AACH,qBACa,eAAe;
|
|
1
|
+
{"version":3,"file":"http-user-context.d.ts","sourceRoot":"","sources":["../src/http-user-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAA;AACtD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAGpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAA;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,qBAAqB,EAAwB,MAAM,qBAAqB,CAAA;AAEjF;;GAEG;AACH,qBACa,eAAe;aAuJR,cAAc,EAAE,0BAA0B,CAAC,IAAI,EAAE,cAAc,CAAC;IAChF,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAxJzB,YAAY,kEAA4D;IAExE,eAAe,sFAA+D;IAErF,OAAO,CAAC,aAAa,CAOpB;IAED,OAAO,CAAC,cAAc,CAOrB;IAED,OAAO,CAAC,IAAI,CAAC,CAAM;IAEnB;;;OAGG;IACU,eAAe,CAAC,OAAO,EAAE,eAAe;IASrD;;;;;;OAMG;IACU,YAAY,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAUzF;;;;;;OAMG;IACU,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAanD,cAAc,CAAC,OAAO,EAAE,eAAe;IAQ7C,uBAAuB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI;IAkB1D,mBAAmB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBzE;;;;;;OAMG;IACU,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAQtE,YAAY,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,cAAc;gBAY1D,cAAc,EAAE,0BAA0B,CAAC,IAAI,EAAE,cAAc,CAAC,EAC/D,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,qBAAqB;CAExD"}
|
|
@@ -17,6 +17,22 @@ let HttpUserContext = class HttpUserContext {
|
|
|
17
17
|
this.authenticator = authenticator;
|
|
18
18
|
this.getUserStore = () => this.authentication.getUserStore(this.storeManager);
|
|
19
19
|
this.getSessionStore = () => this.authentication.getSessionStore(this.storeManager);
|
|
20
|
+
this.getUserByName = async (userName) => {
|
|
21
|
+
const userStore = this.getUserStore();
|
|
22
|
+
const users = await userStore.find({ filter: { username: { $eq: userName } }, top: 2 });
|
|
23
|
+
if (users.length !== 1) {
|
|
24
|
+
throw new security_1.UnauthenticatedError();
|
|
25
|
+
}
|
|
26
|
+
return users[0];
|
|
27
|
+
};
|
|
28
|
+
this.getSessionById = async (sessionId) => {
|
|
29
|
+
const sessionStore = this.getSessionStore();
|
|
30
|
+
const sessions = await sessionStore.find({ filter: { sessionId: { $eq: sessionId } }, top: 2 });
|
|
31
|
+
if (sessions.length !== 1) {
|
|
32
|
+
throw new security_1.UnauthenticatedError();
|
|
33
|
+
}
|
|
34
|
+
return sessions[0];
|
|
35
|
+
};
|
|
20
36
|
}
|
|
21
37
|
/**
|
|
22
38
|
* @param request The request to be authenticated
|
|
@@ -59,7 +75,7 @@ let HttpUserContext = class HttpUserContext {
|
|
|
59
75
|
if (!result.isValid) {
|
|
60
76
|
throw new security_1.UnauthenticatedError();
|
|
61
77
|
}
|
|
62
|
-
const user = await this.
|
|
78
|
+
const user = await this.getUserByName(userName);
|
|
63
79
|
if (!user) {
|
|
64
80
|
throw new security_1.UnauthenticatedError();
|
|
65
81
|
}
|
|
@@ -99,9 +115,9 @@ let HttpUserContext = class HttpUserContext {
|
|
|
99
115
|
// Cookie auth
|
|
100
116
|
const sessionId = this.getSessionIdFromRequest(request);
|
|
101
117
|
if (sessionId) {
|
|
102
|
-
const session = await this.
|
|
118
|
+
const session = await this.getSessionById(sessionId);
|
|
103
119
|
if (session) {
|
|
104
|
-
const user = await this.
|
|
120
|
+
const user = await this.getUserByName(session.username);
|
|
105
121
|
if (user) {
|
|
106
122
|
return user;
|
|
107
123
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-user-context.js","sourceRoot":"","sources":["../src/http-user-context.ts"],"names":[],"mappings":";;;;AACA,0CAAoD;AACpD,8CAA8C;AAC9C,+BAAyB;AACzB,iFAA2E;AAE3E,kDAAiF;AAEjF;;GAEG;AAEH,IAAa,eAAe,GAA5B,MAAa,eAAe;
|
|
1
|
+
{"version":3,"file":"http-user-context.js","sourceRoot":"","sources":["../src/http-user-context.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@furystack/rest-service",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.4",
|
|
4
4
|
"description": "Repository implementation for FuryStack",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"files": [
|
|
@@ -28,13 +28,13 @@
|
|
|
28
28
|
},
|
|
29
29
|
"homepage": "https://github.com/furystack/furystack",
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@furystack/core": "^10.4.
|
|
32
|
-
"@furystack/inject": "^5.0.
|
|
33
|
-
"@furystack/logging": "^2.0.
|
|
34
|
-
"@furystack/repository": "^5.0.
|
|
35
|
-
"@furystack/rest": "^3.1.
|
|
36
|
-
"@furystack/security": "^1.0.
|
|
37
|
-
"@furystack/utils": "^2.0
|
|
31
|
+
"@furystack/core": "^10.4.10",
|
|
32
|
+
"@furystack/inject": "^5.0.7",
|
|
33
|
+
"@furystack/logging": "^2.0.91",
|
|
34
|
+
"@furystack/repository": "^5.0.34",
|
|
35
|
+
"@furystack/rest": "^3.1.12",
|
|
36
|
+
"@furystack/security": "^1.0.1",
|
|
37
|
+
"@furystack/utils": "^2.1.0",
|
|
38
38
|
"ajv": "^8.11.0",
|
|
39
39
|
"ajv-formats": "^2.1.1",
|
|
40
40
|
"path-to-regexp": "^6.2.0",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"uuid": "^8.3.2"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"@furystack/rest-client-got": "^1.0.
|
|
46
|
+
"@furystack/rest-client-got": "^1.0.43",
|
|
47
47
|
"@types/jest": "^27.4.1",
|
|
48
48
|
"@types/node": "^17.0.23",
|
|
49
49
|
"@types/uuid": "^8.3.4",
|
package/src/http-user-context.ts
CHANGED
|
@@ -15,6 +15,24 @@ export class HttpUserContext {
|
|
|
15
15
|
|
|
16
16
|
public getSessionStore = () => this.authentication.getSessionStore(this.storeManager)
|
|
17
17
|
|
|
18
|
+
private getUserByName = async (userName: string) => {
|
|
19
|
+
const userStore = this.getUserStore()
|
|
20
|
+
const users = await userStore.find({ filter: { username: { $eq: userName } }, top: 2 })
|
|
21
|
+
if (users.length !== 1) {
|
|
22
|
+
throw new UnauthenticatedError()
|
|
23
|
+
}
|
|
24
|
+
return users[0]
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
private getSessionById = async (sessionId: string) => {
|
|
28
|
+
const sessionStore = this.getSessionStore()
|
|
29
|
+
const sessions = await sessionStore.find({ filter: { sessionId: { $eq: sessionId } }, top: 2 })
|
|
30
|
+
if (sessions.length !== 1) {
|
|
31
|
+
throw new UnauthenticatedError()
|
|
32
|
+
}
|
|
33
|
+
return sessions[0]
|
|
34
|
+
}
|
|
35
|
+
|
|
18
36
|
private user?: User
|
|
19
37
|
|
|
20
38
|
/**
|
|
@@ -60,7 +78,7 @@ export class HttpUserContext {
|
|
|
60
78
|
if (!result.isValid) {
|
|
61
79
|
throw new UnauthenticatedError()
|
|
62
80
|
}
|
|
63
|
-
const user = await this.
|
|
81
|
+
const user = await this.getUserByName(userName)
|
|
64
82
|
if (!user) {
|
|
65
83
|
throw new UnauthenticatedError()
|
|
66
84
|
}
|
|
@@ -104,9 +122,9 @@ export class HttpUserContext {
|
|
|
104
122
|
// Cookie auth
|
|
105
123
|
const sessionId = this.getSessionIdFromRequest(request)
|
|
106
124
|
if (sessionId) {
|
|
107
|
-
const session = await this.
|
|
125
|
+
const session = await this.getSessionById(sessionId)
|
|
108
126
|
if (session) {
|
|
109
|
-
const user = await this.
|
|
127
|
+
const user = await this.getUserByName(session.username)
|
|
110
128
|
if (user) {
|
|
111
129
|
return user
|
|
112
130
|
}
|