prostgles-server 4.2.643 → 4.2.644
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/debug/fixes-review-build.log +4 -0
- package/debug/fixes-review-client-schema.backup +745 -0
- package/debug/fixes-review-generated-schema.backup +489 -0
- package/debug/fixes-review-probes-build.log +0 -0
- package/debug/fixes-review-probes.patch +43 -0
- package/debug/fixes-review-restore-build.log +0 -0
- package/debug/fixes-review-tests-build.log +0 -0
- package/debug/fixes-review-typecheck.log +8 -0
- package/debug/review-current-fixes-build.log +4 -0
- package/debug/review-current-fixes-client.backup +745 -0
- package/debug/review-current-fixes-probes-build.log +0 -0
- package/debug/review-current-fixes-probes.patch +55 -0
- package/debug/review-current-fixes-restore-build.log +0 -0
- package/debug/review-current-fixes-rls.backup +478 -0
- package/debug/review-current-fixes-schema.backup +489 -0
- package/debug/review-current-fixes-test-build.log +0 -0
- package/debug/review-current-fixes-typecheck.log +8 -0
- package/debug/review-user-identity-build.log +4 -0
- package/debug/review-user-identity-probes-build.log +0 -0
- package/debug/review-user-identity-probes.log +558 -0
- package/debug/review-user-identity-probes.patch +45 -0
- package/debug/review-user-identity-restore-build.log +0 -0
- package/debug/review-user-identity-rls.backup +463 -0
- package/debug/review-user-identity-schema.backup +720 -0
- package/debug/review-user-identity-server.log +3248 -0
- package/debug/review-user-identity-test-build.log +0 -0
- package/debug/review-user-identity-typecheck.log +8 -0
- package/debug/server-user-lint.log +4 -0
- package/debug/server-user-test-server.log +538 -0
- package/debug/server-user-typecheck.log +8 -0
- package/debug/user-identity-direct-call-build.log +0 -0
- package/debug/user-identity-direct-call-schema.backup +489 -0
- package/debug/user-identity-regressions-build.log +4 -0
- package/debug/user-identity-regressions-generated-schema.backup +489 -0
- package/debug/user-identity-regressions-test-build.log +0 -0
- package/dist/Auth/AuthHandler.js +1 -1
- package/dist/Auth/AuthHandler.js.map +1 -1
- package/dist/Auth/AuthTypes.d.ts +8 -6
- package/dist/Auth/AuthTypes.d.ts.map +1 -1
- package/dist/Auth/AuthTypes.js.map +1 -1
- package/dist/Auth/utils/getClientRequestIPsInfo.d.ts +2 -1
- package/dist/Auth/utils/getClientRequestIPsInfo.d.ts.map +1 -1
- package/dist/Auth/utils/getClientRequestIPsInfo.js +8 -1
- package/dist/Auth/utils/getClientRequestIPsInfo.js.map +1 -1
- package/dist/Auth/utils/getSessionUser.d.ts +4 -3
- package/dist/Auth/utils/getSessionUser.d.ts.map +1 -1
- package/dist/Auth/utils/getSessionUser.js +4 -2
- package/dist/Auth/utils/getSessionUser.js.map +1 -1
- package/dist/Auth/utils/getSessionUser.spec.js +2 -4
- package/dist/Auth/utils/getSessionUser.spec.js.map +1 -1
- package/dist/Auth/utils/handleGetUser.d.ts.map +1 -1
- package/dist/Auth/utils/handleGetUser.js +16 -0
- package/dist/Auth/utils/handleGetUser.js.map +1 -1
- package/dist/Auth/utils/serverSideRequest.d.ts +17 -0
- package/dist/Auth/utils/serverSideRequest.d.ts.map +1 -0
- package/dist/Auth/utils/serverSideRequest.js +20 -0
- package/dist/Auth/utils/serverSideRequest.js.map +1 -0
- package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts +0 -4
- package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/ViewHandler.js +5 -8
- package/dist/DboBuilder/ViewHandler/ViewHandler.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/count.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/count.js +2 -1
- package/dist/DboBuilder/ViewHandler/count.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/find.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/find.js +2 -1
- package/dist/DboBuilder/ViewHandler/find.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/getDbHandlerWithAbort.d.ts +9 -2
- package/dist/DboBuilder/ViewHandler/getDbHandlerWithAbort.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/getDbHandlerWithAbort.js +57 -23
- package/dist/DboBuilder/ViewHandler/getDbHandlerWithAbort.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/size.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/size.js +2 -1
- package/dist/DboBuilder/ViewHandler/size.js.map +1 -1
- package/dist/initProstgles.d.ts +12 -2
- package/dist/initProstgles.d.ts.map +1 -1
- package/dist/initProstgles.js +10 -1
- package/dist/initProstgles.js.map +1 -1
- package/dist/runClientRequest.d.ts.map +1 -1
- package/dist/runClientRequest.js +4 -3
- package/dist/runClientRequest.js.map +1 -1
- package/lib/Auth/AuthHandler.ts +1 -1
- package/lib/Auth/AuthTypes.ts +9 -6
- package/lib/Auth/utils/getClientRequestIPsInfo.ts +11 -2
- package/lib/Auth/utils/getSessionUser.spec.ts +4 -6
- package/lib/Auth/utils/getSessionUser.ts +8 -5
- package/lib/Auth/utils/handleGetUser.ts +13 -0
- package/lib/Auth/utils/serverSideRequest.ts +27 -0
- package/lib/DboBuilder/ViewHandler/ViewHandler.ts +11 -11
- package/lib/DboBuilder/ViewHandler/count.ts +2 -1
- package/lib/DboBuilder/ViewHandler/find.ts +2 -1
- package/lib/DboBuilder/ViewHandler/getDbHandlerWithAbort.ts +72 -29
- package/lib/DboBuilder/ViewHandler/size.ts +2 -1
- package/lib/initProstgles.ts +31 -5
- package/lib/runClientRequest.ts +8 -5
- package/package.json +1 -1
package/dist/initProstgles.d.ts
CHANGED
|
@@ -9,6 +9,13 @@ import type { ProstglesInitOptions } from "./ProstglesTypes";
|
|
|
9
9
|
import type { PermissionScope } from "./PublishParser/PublishParser";
|
|
10
10
|
import { type clientOnlyUpdateKeys } from "./updateConfiguration";
|
|
11
11
|
import { getClientHandlers } from "./WebsocketAPI/getClientHandlers";
|
|
12
|
+
type ClientDBHandlerRequest = AuthClientRequest | {
|
|
13
|
+
/** Trusted server-only identity, resolved through auth.findUser on every operation. */
|
|
14
|
+
userId: string;
|
|
15
|
+
socket?: never;
|
|
16
|
+
httpReq?: never;
|
|
17
|
+
res?: never;
|
|
18
|
+
};
|
|
12
19
|
/**
|
|
13
20
|
* Database connection details
|
|
14
21
|
*/
|
|
@@ -70,8 +77,11 @@ export type InitResult<S = void, SUser extends SessionUser = SessionUser, Contex
|
|
|
70
77
|
update: (newOpts: UpdatableOptions<S, SUser, Context>, force?: true) => Promise<void>;
|
|
71
78
|
restart: () => Promise<InitResult<S, SUser, Context, ClientSchema>>;
|
|
72
79
|
options: ProstglesInitOptions<S, SUser, Context>;
|
|
73
|
-
/**
|
|
74
|
-
|
|
80
|
+
/**
|
|
81
|
+
* Uses the configured client schema by default and accepts a publish-profile schema override.
|
|
82
|
+
* Only pass userId from trusted server code; never forward client-supplied input here.
|
|
83
|
+
*/
|
|
84
|
+
getClientDBHandlers: <NarrowedClientSchema = ClientSchema>(clientReq: ClientDBHandlerRequest, scope: PermissionScope | undefined) => ReturnType<typeof getClientHandlers<NarrowedClientSchema>>;
|
|
75
85
|
getFieldsWithTypes: typeof DboBuilder.prototype.getDetailedFieldInfo;
|
|
76
86
|
};
|
|
77
87
|
export declare const initProstgles: (this: Prostgles, onReady: OnReadyCallbackBasic, reason: OnInitReason) => Promise<InitResult<void, SessionUser, any>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initProstgles.d.ts","sourceRoot":"","sources":["../lib/initProstgles.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,SAAS,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,iCAAiC,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGrE,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAEvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"initProstgles.d.ts","sourceRoot":"","sources":["../lib/initProstgles.ts"],"names":[],"mappings":"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"}
|
package/dist/initProstgles.js
CHANGED
|
@@ -13,6 +13,7 @@ const updateConfiguration_1 = require("./updateConfiguration");
|
|
|
13
13
|
const utils_1 = require("./utils/utils");
|
|
14
14
|
const getClientHandlers_1 = require("./WebsocketAPI/getClientHandlers");
|
|
15
15
|
const getAdminClient_1 = require("./DboBuilder/runSql/getAdminClient");
|
|
16
|
+
const serverSideRequest_1 = require("./Auth/utils/serverSideRequest");
|
|
16
17
|
const initProstgles = async function (onReady, reason) {
|
|
17
18
|
this.checkNotDestroyed();
|
|
18
19
|
this.loaded = false;
|
|
@@ -190,7 +191,15 @@ const initProstgles = async function (onReady, reason) {
|
|
|
190
191
|
await (0, utils_1.sleep)(1000);
|
|
191
192
|
return true;
|
|
192
193
|
},
|
|
193
|
-
getClientDBHandlers: (clientReq, scope) =>
|
|
194
|
+
getClientDBHandlers: async (clientReq, scope) => {
|
|
195
|
+
if ("userId" in clientReq) {
|
|
196
|
+
if ("socket" in clientReq || "httpReq" in clientReq || "res" in clientReq) {
|
|
197
|
+
throw new Error("userId cannot be combined with a client request");
|
|
198
|
+
}
|
|
199
|
+
return (0, getClientHandlers_1.getClientHandlers)(this, (0, serverSideRequest_1.createServerSideRequest)(this, clientReq.userId), scope);
|
|
200
|
+
}
|
|
201
|
+
return (0, getClientHandlers_1.getClientHandlers)(this, clientReq, scope);
|
|
202
|
+
},
|
|
194
203
|
};
|
|
195
204
|
return initResult;
|
|
196
205
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initProstgles.js","sourceRoot":"","sources":["../lib/initProstgles.ts"],"names":[],"mappings":";;;AAAA,uEAAoE;AACpE,qDAAkD;AAKlD,wEAA0E;AAC1E,uDAAoD;AAGpD,uDAAoD;AAEpD,2CAA6C;AAG7C,2DAAwD;AACxD,yDAAsD;AACtD,+DAAuF;AACvF,yCAAsC;AACtC,wEAAqE;AACrE,uEAAoE;
|
|
1
|
+
{"version":3,"file":"initProstgles.js","sourceRoot":"","sources":["../lib/initProstgles.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runClientRequest.d.ts","sourceRoot":"","sources":["../lib/runClientRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAgB,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAGtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"runClientRequest.d.ts","sourceRoot":"","sources":["../lib/runClientRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAgB,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAGtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,sCAAsC,CAAC;AA+B5E,KAAK,IAAI,GAAG;IACV,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAUF,eAAO,MAAM,gBAAgB,GAC3B,MAAM,SAAS,EACf,kBAAkB,IAAI,EACtB,WAAW,iBAAiB,EAC5B,OAAO,eAAe,GAAG,SAAS,EAClC,sBAAsB,iBAAiB,8BA6HxC,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,MAAM,SAAS,EACf,WAAW,iBAAiB;;;;;;;;EAe7B,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,MAAM,SAAS,EACf,iBAAiB,UAAU,EAC3B,WAAW,iBAAiB,iBAsB7B,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,MAAM,SAAS,EACf,iBAAiB,UAAU,EAC3B,WAAW,iBAAiB,qBAgD7B,CAAC"}
|
package/dist/runClientRequest.js
CHANGED
|
@@ -59,7 +59,9 @@ const runClientRequest = async function (nonValidatedArgs, clientReq, scope, tra
|
|
|
59
59
|
SOCKET_ONLY_COMMANDS.join(", "));
|
|
60
60
|
}
|
|
61
61
|
const tableHandler = transactionHandlers ?
|
|
62
|
-
|
|
62
|
+
Object.hasOwn(transactionHandlers, tableName) ?
|
|
63
|
+
transactionHandlers[tableName]
|
|
64
|
+
: undefined
|
|
63
65
|
: this.dboBuilder.dboMap.get(tableName);
|
|
64
66
|
if (!tableHandler) {
|
|
65
67
|
throw `tableName ${tableName} is invalid or not allowed`;
|
|
@@ -74,7 +76,7 @@ const runClientRequest = async function (nonValidatedArgs, clientReq, scope, tra
|
|
|
74
76
|
clientInfo,
|
|
75
77
|
scope,
|
|
76
78
|
});
|
|
77
|
-
const sessionUser = (0, getSessionUser_1.getSessionUser)(clientInfo);
|
|
79
|
+
const sessionUser = (0, getSessionUser_1.getSessionUser)(clientInfo, this.opts.auth?.sessionFields);
|
|
78
80
|
const localParams = {
|
|
79
81
|
clientReq,
|
|
80
82
|
isRemoteRequest: { user: sessionUser, clientInfo },
|
|
@@ -93,7 +95,6 @@ const runClientRequest = async function (nonValidatedArgs, clientReq, scope, tra
|
|
|
93
95
|
throw validation.error;
|
|
94
96
|
}
|
|
95
97
|
this.publishParser.validateRequestRule({ tableName, command: validation.data.param1.command, clientReq }, parsedTableRule, scope);
|
|
96
|
-
tableHandler.abortRequests.add(validation.data.param1.abortSignalId);
|
|
97
98
|
return tableHandler.abortRemoteQuery(validation.data.param1.abortSignalId, localParams);
|
|
98
99
|
}
|
|
99
100
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runClientRequest.js","sourceRoot":"","sources":["../lib/runClientRequest.ts"],"names":[],"mappings":";;;AACA,qDAMyB;AAEzB,gEAA6D;AAI7D,uDAAuD;
|
|
1
|
+
{"version":3,"file":"runClientRequest.js","sourceRoot":"","sources":["../lib/runClientRequest.ts"],"names":[],"mappings":"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"}
|
package/lib/Auth/AuthHandler.ts
CHANGED
|
@@ -171,7 +171,7 @@ export class AuthHandler {
|
|
|
171
171
|
* Based on sidKeyName from auth
|
|
172
172
|
*/
|
|
173
173
|
getValidatedSid(maybeClientReq: AuthClientRequest | undefined): string | undefined {
|
|
174
|
-
if (!maybeClientReq) return undefined;
|
|
174
|
+
if (!maybeClientReq || (!maybeClientReq.socket && !maybeClientReq.httpReq)) return undefined;
|
|
175
175
|
const { sidKeyName } = this;
|
|
176
176
|
if (maybeClientReq.socket) {
|
|
177
177
|
const { handshake } = maybeClientReq.socket;
|
package/lib/Auth/AuthTypes.ts
CHANGED
|
@@ -29,6 +29,7 @@ import type { ClientSocketWithCachedData } from "../DboBuilder/DboBuilderTypes";
|
|
|
29
29
|
import { type CachedSession } from "../DboBuilder/DboBuilderTypes";
|
|
30
30
|
import type { DB } from "../Prostgles";
|
|
31
31
|
import { GET_AUTH_ROUTE } from "./AuthHandler";
|
|
32
|
+
import type { ServerSideRequest } from "./utils/serverSideRequest";
|
|
32
33
|
|
|
33
34
|
type Awaitable<T> = T | Promise<T>;
|
|
34
35
|
|
|
@@ -59,7 +60,7 @@ type HttpClientRequest = {
|
|
|
59
60
|
res: ExpressRes;
|
|
60
61
|
socket?: undefined;
|
|
61
62
|
};
|
|
62
|
-
export type AuthClientRequest = SocketClientRequest | HttpClientRequest;
|
|
63
|
+
export type AuthClientRequest = SocketClientRequest | HttpClientRequest | ServerSideRequest;
|
|
63
64
|
|
|
64
65
|
export type ThirdPartyProviders = {
|
|
65
66
|
facebook?: Pick<FacebookStrategy, "clientID" | "clientSecret"> & {
|
|
@@ -244,10 +245,6 @@ export type SessionUser<
|
|
|
244
245
|
*/
|
|
245
246
|
isAnonymous?: boolean;
|
|
246
247
|
|
|
247
|
-
/**
|
|
248
|
-
* Controls which fields from user are available in postgres session variable
|
|
249
|
-
*/
|
|
250
|
-
sessionFields?: FieldFilter<ServerUser>;
|
|
251
248
|
/**
|
|
252
249
|
* User data sent to the authenticated client
|
|
253
250
|
*/
|
|
@@ -258,7 +255,7 @@ type AllNeverAndOptional<T> = {
|
|
|
258
255
|
[P in keyof T]?: never;
|
|
259
256
|
};
|
|
260
257
|
export type AuthResultWithSID<SU = SessionUser> =
|
|
261
|
-
| (SU & { sid: string; error?: undefined; preferredLogin?: undefined })
|
|
258
|
+
| (SU & { sid: string | undefined; error?: undefined; preferredLogin?: undefined })
|
|
262
259
|
| (AllNeverAndOptional<SU> & {
|
|
263
260
|
sid: string | undefined;
|
|
264
261
|
error?: AuthResponse.AuthFailure;
|
|
@@ -333,6 +330,12 @@ export type AuthConfig<S = void, SUser extends SessionUser = SessionUser> = {
|
|
|
333
330
|
dbo: DBOFullyTyped<S>,
|
|
334
331
|
) => Awaitable<SUser["user"] | undefined>;
|
|
335
332
|
|
|
333
|
+
/**
|
|
334
|
+
* Controls which fields from user are available in postgres session variable.
|
|
335
|
+
* "id" and "type" are always included.
|
|
336
|
+
*/
|
|
337
|
+
sessionFields?: FieldFilter<SUser["user"]>;
|
|
338
|
+
|
|
336
339
|
/**
|
|
337
340
|
* Will setup auth routes
|
|
338
341
|
* /login
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { ClientSocketWithCachedData } from "../../DboBuilder/DboBuilderTypes";
|
|
2
2
|
import type { ExpressReq, LoginClientInfo } from "../AuthTypes";
|
|
3
|
+
import type { ServerSideRequest } from "./serverSideRequest";
|
|
3
4
|
type ClientReq =
|
|
4
5
|
| { socket: ClientSocketWithCachedData; httpReq?: undefined }
|
|
5
|
-
| { httpReq: ExpressReq; socket?: undefined }
|
|
6
|
+
| { httpReq: ExpressReq; socket?: undefined }
|
|
7
|
+
| ServerSideRequest;
|
|
6
8
|
export const getClientRequestIPsInfo = <T extends ClientReq>(req: T): LoginClientInfo => {
|
|
7
9
|
if (req.httpReq) {
|
|
8
10
|
const ip_address = req.httpReq.ip;
|
|
@@ -14,7 +16,7 @@ export const getClientRequestIPsInfo = <T extends ClientReq>(req: T): LoginClien
|
|
|
14
16
|
x_real_ip: req.httpReq.headers["x-real-ip"] as string | undefined,
|
|
15
17
|
user_agent,
|
|
16
18
|
};
|
|
17
|
-
} else {
|
|
19
|
+
} else if (req.socket) {
|
|
18
20
|
const ip_address = req.socket.handshake.address;
|
|
19
21
|
if (!ip_address) throw new Error("ip_address missing from req.socket.handshake");
|
|
20
22
|
return {
|
|
@@ -24,4 +26,11 @@ export const getClientRequestIPsInfo = <T extends ClientReq>(req: T): LoginClien
|
|
|
24
26
|
user_agent: req.socket.handshake.headers["user-agent"],
|
|
25
27
|
};
|
|
26
28
|
}
|
|
29
|
+
// Server-side user requests have no network metadata.
|
|
30
|
+
return {
|
|
31
|
+
ip_address: "",
|
|
32
|
+
ip_address_remote: undefined,
|
|
33
|
+
x_real_ip: undefined,
|
|
34
|
+
user_agent: undefined,
|
|
35
|
+
};
|
|
27
36
|
};
|
|
@@ -14,10 +14,9 @@ void describe("getSessionUser", async () => {
|
|
|
14
14
|
secret: "hidden",
|
|
15
15
|
},
|
|
16
16
|
clientUser: { id: "user-1", type: "admin" },
|
|
17
|
-
|
|
18
|
-
} as AuthResultWithSID;
|
|
17
|
+
} satisfies AuthResultWithSID;
|
|
19
18
|
|
|
20
|
-
assert.deepEqual(getSessionUser(clientInfo), {
|
|
19
|
+
assert.deepEqual(getSessionUser(clientInfo, ["tenant_id"]), {
|
|
21
20
|
tenant_id: 42,
|
|
22
21
|
id: "user-1",
|
|
23
22
|
type: "admin",
|
|
@@ -29,10 +28,9 @@ void describe("getSessionUser", async () => {
|
|
|
29
28
|
sid: "sid",
|
|
30
29
|
user: { id: "user-1", type: "admin", tenant_id: 42, secret: "hidden" },
|
|
31
30
|
clientUser: { id: "user-1", type: "admin" },
|
|
32
|
-
|
|
33
|
-
} as AuthResultWithSID;
|
|
31
|
+
} satisfies AuthResultWithSID;
|
|
34
32
|
|
|
35
|
-
assert.deepEqual(getSessionUser(clientInfo), {
|
|
33
|
+
assert.deepEqual(getSessionUser(clientInfo, { secret: false }), {
|
|
36
34
|
id: "user-1",
|
|
37
35
|
type: "admin",
|
|
38
36
|
tenant_id: 42,
|
|
@@ -1,16 +1,19 @@
|
|
|
1
|
-
import { getKeys, pickKeys, type UserLike } from "prostgles-types";
|
|
1
|
+
import { getKeys, pickKeys, type FieldFilter, type UserLike } from "prostgles-types";
|
|
2
2
|
import { parseFieldFilter } from "../../DboBuilder/ViewHandler/parseFieldFilter";
|
|
3
|
-
import type { AuthResultWithSID } from "../AuthTypes";
|
|
4
3
|
|
|
5
|
-
export const getSessionUser =
|
|
4
|
+
export const getSessionUser = <U extends UserLike = UserLike>(
|
|
5
|
+
clientInfo: { user?: U } | undefined,
|
|
6
|
+
sessionFieldsFilter: undefined | FieldFilter<U>,
|
|
7
|
+
): UserLike | undefined => {
|
|
6
8
|
const user = clientInfo?.user;
|
|
7
9
|
if (!user) return;
|
|
8
10
|
|
|
9
11
|
const sessionFields = parseFieldFilter(
|
|
10
|
-
|
|
12
|
+
//@ts-expect-error
|
|
13
|
+
sessionFieldsFilter ?? [],
|
|
11
14
|
false,
|
|
12
15
|
getKeys(user),
|
|
13
|
-
);
|
|
16
|
+
) as string[];
|
|
14
17
|
|
|
15
18
|
return {
|
|
16
19
|
...pickKeys(user, sessionFields),
|
|
@@ -4,6 +4,7 @@ import { getClientRequestIPsInfo, type AuthHandler } from "../AuthHandler";
|
|
|
4
4
|
import type { AuthClientRequest, AuthResultOrError, AuthResultWithSID } from "../AuthTypes";
|
|
5
5
|
import type { LoginResponseHandler } from "../endpoints/setLoginRequestHandler";
|
|
6
6
|
import { throttledAuthCall } from "./throttledReject";
|
|
7
|
+
import { getServerSideUserId } from "./serverSideRequest";
|
|
7
8
|
|
|
8
9
|
export type GetUserOrRedirected = AuthResultWithSID | "new-session-redirect";
|
|
9
10
|
|
|
@@ -17,6 +18,18 @@ export async function handleGetUserThrottled(
|
|
|
17
18
|
clientReq: AuthClientRequest,
|
|
18
19
|
): Promise<GetUserOrRedirected> {
|
|
19
20
|
const config = this.config;
|
|
21
|
+
if (!clientReq.httpReq && !clientReq.socket) {
|
|
22
|
+
const userId = getServerSideUserId(this.prostgles, clientReq);
|
|
23
|
+
if (!userId) throw new Error("Invalid server-side user request");
|
|
24
|
+
if (!config?.findUser) throw new Error("auth.findUser is required for userId requests");
|
|
25
|
+
const user = await config.findUser({ id: userId }, this.dbHandles.dbo);
|
|
26
|
+
if (!user || user.id !== userId) throw new Error("User not found for userId request");
|
|
27
|
+
return {
|
|
28
|
+
sid: undefined,
|
|
29
|
+
user,
|
|
30
|
+
clientUser: { id: user.id, type: user.type },
|
|
31
|
+
} satisfies GetUserOrRedirected;
|
|
32
|
+
}
|
|
20
33
|
if (!config) {
|
|
21
34
|
return {
|
|
22
35
|
sid: undefined,
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { AuthClientRequest } from "../AuthTypes";
|
|
2
|
+
import type { Prostgles } from "../../Prostgles";
|
|
3
|
+
|
|
4
|
+
/** This capability cannot be supplied through JSON, HTTP or socket payloads. */
|
|
5
|
+
const serverSideUser = Symbol("serverSideUser");
|
|
6
|
+
|
|
7
|
+
export type ServerSideRequest = {
|
|
8
|
+
readonly [serverSideUser]: { readonly prostgles: Prostgles; readonly userId: string };
|
|
9
|
+
socket?: undefined;
|
|
10
|
+
httpReq?: undefined;
|
|
11
|
+
res?: undefined;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export const createServerSideRequest = (prostgles: Prostgles, userId: string): ServerSideRequest => {
|
|
15
|
+
if (typeof userId !== "string" || !userId.length) {
|
|
16
|
+
throw new Error("userId must be a non-empty string");
|
|
17
|
+
}
|
|
18
|
+
return Object.freeze({
|
|
19
|
+
[serverSideUser]: Object.freeze({ prostgles, userId }),
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export const getServerSideUserId = (prostgles: Prostgles, request: AuthClientRequest) =>
|
|
24
|
+
!request.socket && !request.httpReq &&
|
|
25
|
+
serverSideUser in request && request[serverSideUser].prostgles === prostgles ?
|
|
26
|
+
request[serverSideUser].userId
|
|
27
|
+
: undefined;
|
|
@@ -25,7 +25,7 @@ import { getColumns } from "../getColumns";
|
|
|
25
25
|
import type { Graph } from "../joins/shortestPath";
|
|
26
26
|
import { count } from "./count";
|
|
27
27
|
import { find, type Param3 } from "./find";
|
|
28
|
-
import {
|
|
28
|
+
import { getAbortSignalKeys } from "./getDbHandlerWithAbort";
|
|
29
29
|
import { getInfo } from "./getInfo";
|
|
30
30
|
import { parseFieldFilter } from "./parseFieldFilter";
|
|
31
31
|
import { size } from "./size";
|
|
@@ -121,20 +121,21 @@ export class ViewHandler {
|
|
|
121
121
|
};
|
|
122
122
|
|
|
123
123
|
abortRemoteQuery = (abortSignalId: string, localParams: LocalParams) => {
|
|
124
|
-
const
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
const abortableQuery = this.activeQueries.get(
|
|
131
|
-
if (!abortableQuery
|
|
124
|
+
const abortSignalKeys = getAbortSignalKeys(
|
|
125
|
+
this.dboBuilder.prostgles,
|
|
126
|
+
{ abortSignalId },
|
|
127
|
+
localParams,
|
|
128
|
+
);
|
|
129
|
+
|
|
130
|
+
const abortableQuery = this.activeQueries.get(abortSignalKeys.abortSignalKey);
|
|
131
|
+
if (!abortableQuery) {
|
|
132
132
|
throw new Error(
|
|
133
133
|
`No active query found with abortSignalId ${abortSignalId}. Ensure that the query was initiated with the correct abortSignalId.`,
|
|
134
134
|
);
|
|
135
135
|
}
|
|
136
|
+
this.abortRequests.add(abortSignalKeys.abortSignalKey);
|
|
136
137
|
abortableQuery.abort();
|
|
137
|
-
this.abortRequests.delete(
|
|
138
|
+
this.abortRequests.delete(abortSignalKeys.abortSignalKey);
|
|
138
139
|
};
|
|
139
140
|
|
|
140
141
|
activeQueries = new Map<
|
|
@@ -148,7 +149,6 @@ export class ViewHandler {
|
|
|
148
149
|
}
|
|
149
150
|
>();
|
|
150
151
|
abortRequests = new Set<string>();
|
|
151
|
-
getDbHandlerWithAbort = getDbHandlerWithAbort.bind(this);
|
|
152
152
|
|
|
153
153
|
_log = ({
|
|
154
154
|
command,
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
import type { ViewHandler } from "./ViewHandler";
|
|
10
10
|
import { getReturnTypeQuery } from "./getReturnTypeQuery";
|
|
11
11
|
import type { Param3 } from "./find";
|
|
12
|
+
import { getDbHandlerWithAbort } from "./getDbHandlerWithAbort";
|
|
12
13
|
|
|
13
14
|
export async function count(
|
|
14
15
|
this: ViewHandler,
|
|
@@ -59,7 +60,7 @@ export async function count(
|
|
|
59
60
|
return queryToReturn as unknown[];
|
|
60
61
|
}
|
|
61
62
|
|
|
62
|
-
const handler =
|
|
63
|
+
const handler = getDbHandlerWithAbort(this, localParams, {
|
|
63
64
|
abortSignal: selectParams?.abortSignal,
|
|
64
65
|
abortSignalId: param3?.abortSignalId,
|
|
65
66
|
});
|
|
@@ -13,6 +13,7 @@ import { getSelectQuery } from "../QueryBuilder/getSelectQuery";
|
|
|
13
13
|
import { getReturnTypeQuery } from "./getReturnTypeQuery";
|
|
14
14
|
import { validateSelectParams } from "./validateSelectParams";
|
|
15
15
|
import type { ViewHandler } from "./ViewHandler";
|
|
16
|
+
import { getDbHandlerWithAbort } from "./getDbHandlerWithAbort";
|
|
16
17
|
|
|
17
18
|
export type Param3 = {
|
|
18
19
|
abortSignalId?: string;
|
|
@@ -102,7 +103,7 @@ export const find = async function (
|
|
|
102
103
|
|
|
103
104
|
const query = queryWithRLS;
|
|
104
105
|
const isOneOrNone = returnType === "row" || returnType === "value";
|
|
105
|
-
const dbHandler =
|
|
106
|
+
const dbHandler = getDbHandlerWithAbort(this, localParams, {
|
|
106
107
|
abortSignal,
|
|
107
108
|
abortSignalId: param3?.abortSignalId,
|
|
108
109
|
});
|
|
@@ -2,12 +2,16 @@ import type { DB } from "../../initProstgles";
|
|
|
2
2
|
import { QUERY_ID_PREFIX, type LocalParams } from "../DboBuilder";
|
|
3
3
|
import type { ViewHandler } from "./ViewHandler";
|
|
4
4
|
import type pgPromise from "pg-promise";
|
|
5
|
+
import { getServerSideUserId } from "../../Auth/utils/serverSideRequest";
|
|
6
|
+
import type { Prostgles } from "../../Prostgles";
|
|
5
7
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
+
type Params = { abortSignal: AbortSignal | undefined; abortSignalId: string | undefined };
|
|
9
|
+
|
|
10
|
+
export const getDbHandlerWithAbort = (
|
|
11
|
+
viewHandler: ViewHandler,
|
|
8
12
|
localParams: LocalParams | undefined,
|
|
9
|
-
params:
|
|
10
|
-
): Pick<DB | pgPromise.ITask<{}>, "any" | "one" | "many" | "manyOrNone" | "none" | "oneOrNone"> {
|
|
13
|
+
params: Params,
|
|
14
|
+
): Pick<DB | pgPromise.ITask<{}>, "any" | "one" | "many" | "manyOrNone" | "none" | "oneOrNone"> => {
|
|
11
15
|
if (params.abortSignal && params.abortSignalId) {
|
|
12
16
|
throw new Error("Cannot provide both abortSignal and abortSignalId");
|
|
13
17
|
}
|
|
@@ -16,28 +20,29 @@ export function getDbHandlerWithAbort(
|
|
|
16
20
|
throw new Error("Query aborted before execution");
|
|
17
21
|
}
|
|
18
22
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const abortSignalId = params.abortSignalId ?? crypto.randomUUID();
|
|
22
|
-
|
|
23
|
-
if (this.activeQueries.has(abortSignalId)) {
|
|
24
|
-
throw new Error(
|
|
25
|
-
`A query with abortSignalId ${params.abortSignalId} is already active. Ensure that each query has a unique abortSignalId.`,
|
|
26
|
-
);
|
|
23
|
+
if (params.abortSignal !== undefined && !(params.abortSignal instanceof AbortSignal)) {
|
|
24
|
+
throw new Error("abortSignal must be an instance of AbortSignal");
|
|
27
25
|
}
|
|
28
|
-
|
|
29
|
-
const {
|
|
26
|
+
|
|
27
|
+
const { clientReq } = localParams ?? {};
|
|
28
|
+
const abortSignal = params.abortSignal ?? AbortSignal.timeout(clientReq ? 7_000 : 120_000);
|
|
29
|
+
const { prostgles } = viewHandler.dboBuilder;
|
|
30
|
+
const handler = viewHandler.getTransaction(localParams)?.t ?? viewHandler.db;
|
|
31
|
+
const { adminClient } = prostgles;
|
|
30
32
|
if (!adminClient) {
|
|
31
33
|
throw new Error(
|
|
32
34
|
"adminClient not available. Ensure prostgles.adminClient is initialized before using abortable queries.",
|
|
33
35
|
);
|
|
34
36
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
+
|
|
38
|
+
const signalKeys = getAbortSignalKeys(prostgles, params, localParams);
|
|
39
|
+
const { abortSignalKey } = signalKeys;
|
|
40
|
+
if (viewHandler.activeQueries.has(abortSignalKey)) {
|
|
37
41
|
throw new Error(
|
|
38
|
-
|
|
42
|
+
`A query with abortSignalId ${params.abortSignalId} is already active. Ensure that each query has a unique abortSignalId.`,
|
|
39
43
|
);
|
|
40
44
|
}
|
|
45
|
+
|
|
41
46
|
const withAbortQuery = <Args extends unknown[], R extends Promise<any>>(
|
|
42
47
|
func: (query: string, ...args: Args) => R,
|
|
43
48
|
) => {
|
|
@@ -52,16 +57,17 @@ export function getDbHandlerWithAbort(
|
|
|
52
57
|
}
|
|
53
58
|
|
|
54
59
|
const abort = () => {
|
|
55
|
-
void
|
|
56
|
-
data: { query, abortSignalId },
|
|
60
|
+
void viewHandler._log({
|
|
61
|
+
data: { query, abortSignalId: signalKeys.abortSignalId },
|
|
57
62
|
command: "abort",
|
|
58
63
|
localParams,
|
|
59
|
-
duration:
|
|
64
|
+
duration:
|
|
65
|
+
Date.now() - (viewHandler.activeQueries.get(abortSignalKey)?.start ?? Date.now()),
|
|
60
66
|
error: new Error("Query aborted"),
|
|
61
67
|
});
|
|
62
68
|
/** Only terminate if there is exactly one matching query with a query id prefix */
|
|
63
69
|
|
|
64
|
-
|
|
70
|
+
viewHandler.abortRequests.delete(abortSignalKey);
|
|
65
71
|
void adminClient
|
|
66
72
|
.query(
|
|
67
73
|
`
|
|
@@ -71,17 +77,18 @@ export function getDbHandlerWithAbort(
|
|
|
71
77
|
`,
|
|
72
78
|
[`${queryIdPrefix}%`],
|
|
73
79
|
)
|
|
74
|
-
.catch((
|
|
80
|
+
.catch((_err) => {
|
|
75
81
|
// ignore error
|
|
76
82
|
});
|
|
77
83
|
};
|
|
78
84
|
|
|
79
|
-
if (
|
|
80
|
-
|
|
81
|
-
throw new Error(
|
|
85
|
+
if (viewHandler.abortRequests.has(abortSignalKey)) {
|
|
86
|
+
viewHandler.abortRequests.delete(abortSignalKey);
|
|
87
|
+
throw new Error("Abort already requested");
|
|
82
88
|
}
|
|
83
89
|
|
|
84
|
-
|
|
90
|
+
const sid = prostgles.authHandler.getSIDNoError(clientReq);
|
|
91
|
+
viewHandler.activeQueries.set(abortSignalKey, {
|
|
85
92
|
query,
|
|
86
93
|
start: Date.now(),
|
|
87
94
|
sid,
|
|
@@ -91,8 +98,8 @@ export function getDbHandlerWithAbort(
|
|
|
91
98
|
abortSignal.addEventListener("abort", abort);
|
|
92
99
|
return func(query, ...args).finally(() => {
|
|
93
100
|
abortSignal.removeEventListener("abort", abort);
|
|
94
|
-
|
|
95
|
-
|
|
101
|
+
viewHandler.activeQueries.delete(abortSignalKey);
|
|
102
|
+
viewHandler.abortRequests.delete(abortSignalKey);
|
|
96
103
|
});
|
|
97
104
|
};
|
|
98
105
|
};
|
|
@@ -105,4 +112,40 @@ export function getDbHandlerWithAbort(
|
|
|
105
112
|
none: withAbortQuery(handler.none.bind(handler)),
|
|
106
113
|
many: withAbortQuery(handler.many.bind(handler)),
|
|
107
114
|
};
|
|
108
|
-
}
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
export const getAbortSignalKeys = (
|
|
118
|
+
prostgles: Prostgles,
|
|
119
|
+
params: Pick<Params, "abortSignalId">,
|
|
120
|
+
localParams: LocalParams | undefined,
|
|
121
|
+
) => {
|
|
122
|
+
const clientIdentifier = (() => {
|
|
123
|
+
const { clientReq } = localParams ?? {};
|
|
124
|
+
if (!clientReq) {
|
|
125
|
+
if (params.abortSignalId !== undefined) {
|
|
126
|
+
throw new Error(
|
|
127
|
+
"abortSignalId must not be provided for local requests. Use abortSignal instead.",
|
|
128
|
+
);
|
|
129
|
+
}
|
|
130
|
+
return ["<local-request>", "local"];
|
|
131
|
+
}
|
|
132
|
+
const sid = prostgles.authHandler.getSIDNoError(clientReq);
|
|
133
|
+
if (sid) return [sid, "sid"];
|
|
134
|
+
const userId = getServerSideUserId(prostgles, clientReq);
|
|
135
|
+
if (userId) return [userId, "userId"];
|
|
136
|
+
throw new Error(
|
|
137
|
+
"Cannot get SID or userId from client request. Ensure that the client is authenticated before using abortable queries.",
|
|
138
|
+
);
|
|
139
|
+
})();
|
|
140
|
+
const abortSignalId = params.abortSignalId ?? crypto.randomUUID();
|
|
141
|
+
|
|
142
|
+
const MAX_LENGTH = 36;
|
|
143
|
+
if (abortSignalId.length > MAX_LENGTH) {
|
|
144
|
+
throw new Error(`abortSignalId length must not exceed ${MAX_LENGTH} characters`);
|
|
145
|
+
}
|
|
146
|
+
const abortSignalKey = JSON.stringify([...clientIdentifier, abortSignalId]);
|
|
147
|
+
return {
|
|
148
|
+
abortSignalId,
|
|
149
|
+
abortSignalKey,
|
|
150
|
+
};
|
|
151
|
+
};
|