@memberjunction/server 0.9.219 → 0.9.221
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/build.log.json +6 -0
- package/dist/auth/index.js +18 -0
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/tokenExpiredError.js +16 -0
- package/dist/auth/tokenExpiredError.js.map +1 -0
- package/dist/context.js +10 -1
- package/dist/context.js.map +1 -1
- package/dist/generated/generated.js +270 -246
- package/dist/generated/generated.js.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/package.json +11 -11
- package/src/auth/index.ts +6 -0
- package/src/auth/tokenExpiredError.ts +12 -0
- package/src/context.ts +11 -1
- package/src/generated/generated.ts +513 -511
- package/src/index.ts +1 -0
package/dist/index.js
CHANGED
|
@@ -29,7 +29,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
29
29
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
30
30
|
};
|
|
31
31
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
-
exports.serve = exports.configInfo = exports.NewUserBase = exports.MaxLength = void 0;
|
|
32
|
+
exports.serve = exports.TokenExpiredError = exports.configInfo = exports.NewUserBase = exports.MaxLength = void 0;
|
|
33
33
|
const dotenv_1 = __importDefault(require("dotenv"));
|
|
34
34
|
dotenv_1.default.config();
|
|
35
35
|
const express4_1 = require("@apollo/server/express4");
|
|
@@ -64,6 +64,8 @@ Object.defineProperty(exports, "configInfo", { enumerable: true, get: function (
|
|
|
64
64
|
__exportStar(require("./directives"), exports);
|
|
65
65
|
__exportStar(require("./entitySubclasses/userViewEntity.server"), exports);
|
|
66
66
|
__exportStar(require("./types"), exports);
|
|
67
|
+
var auth_1 = require("./auth");
|
|
68
|
+
Object.defineProperty(exports, "TokenExpiredError", { enumerable: true, get: function () { return auth_1.TokenExpiredError; } });
|
|
67
69
|
__exportStar(require("./generic/PushStatusResolver"), exports);
|
|
68
70
|
__exportStar(require("./generic/ResolverBase"), exports);
|
|
69
71
|
__exportStar(require("./generic/RunViewResolver"), exports);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAA4B;AAE5B,gBAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,sDAA4D;AAC5D,kDAAqD;AACrD,+CAAgD;AAChD,mFAA2G;AAC3G,6CAAmC;AACnC,gDAAwB;AACxB,sDAA8B;AAC9B,yCAAqC;AACrC,8CAAkD;AAClD,yCAAyC;AACzC,yCAAgC;AAChC,4BAA0B;AAC1B,+BAAqC;AACrC,+CAAqF;AACrF,qCAAqC;AACrC,2BAAqC;AACrC,kEAA+C;AAC/C,qCAA2G;AAC3G,uCAA4D;AAC5D,6CAA+C;AAC/C,gDAAwB;AAExB,MAAM,oBAAoB,GAAG,mBAAU,CAAC,gBAAgB,CAAC,4BAA4B,CAAC;AAEtF,mDAA4C;AAAnC,4GAAA,SAAS,OAAA;AAClB,+CAA6B;AAC7B,4CAA8C;AAArC,uGAAA,WAAW,OAAA;AACpB,mCAAsC;AAA7B,oGAAA,UAAU,OAAA;AACnB,+CAA6B;AAC7B,2EAAyD;AACzD,0CAAwB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/server",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.221",
|
|
4
4
|
"description": "MemberJunction: This project provides API access via GraphQL to the common data store.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "src/index.ts",
|
|
@@ -21,16 +21,16 @@
|
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"@apollo/server": "^4.9.1",
|
|
23
23
|
"@graphql-tools/utils": "^10.0.1",
|
|
24
|
-
"@memberjunction/ai": "^0.9.
|
|
25
|
-
"@memberjunction/aiengine": "^0.9.
|
|
26
|
-
"@memberjunction/core": "^0.9.
|
|
27
|
-
"@memberjunction/core-entities": "^0.9.
|
|
28
|
-
"@memberjunction/data-context": "^0.9.
|
|
29
|
-
"@memberjunction/data-context-server": "^0.9.
|
|
30
|
-
"@memberjunction/global": "^0.9.
|
|
31
|
-
"@memberjunction/queue": "^0.9.
|
|
32
|
-
"@memberjunction/sqlserver-dataprovider": "^0.9.
|
|
33
|
-
"@memberjunction/skip-types": "^0.9.
|
|
24
|
+
"@memberjunction/ai": "^0.9.156",
|
|
25
|
+
"@memberjunction/aiengine": "^0.9.53",
|
|
26
|
+
"@memberjunction/core": "^0.9.168",
|
|
27
|
+
"@memberjunction/core-entities": "^0.9.151",
|
|
28
|
+
"@memberjunction/data-context": "^0.9.37",
|
|
29
|
+
"@memberjunction/data-context-server": "^0.9.33",
|
|
30
|
+
"@memberjunction/global": "^0.9.148",
|
|
31
|
+
"@memberjunction/queue": "^0.9.171",
|
|
32
|
+
"@memberjunction/sqlserver-dataprovider": "^0.9.182",
|
|
33
|
+
"@memberjunction/skip-types": "^0.9.61",
|
|
34
34
|
"@types/cors": "^2.8.13",
|
|
35
35
|
"@types/jsonwebtoken": "^8.5.9",
|
|
36
36
|
"@types/node": "^18.11.14",
|
package/src/auth/index.ts
CHANGED
|
@@ -7,6 +7,8 @@ import { Metadata, UserInfo } from '@memberjunction/core';
|
|
|
7
7
|
import { NewUserBase } from './newUsers';
|
|
8
8
|
import { MJGlobal } from '@memberjunction/global';
|
|
9
9
|
|
|
10
|
+
export * from './tokenExpiredError';
|
|
11
|
+
|
|
10
12
|
const missingAzureConfig = !tenantID || !webClientID;
|
|
11
13
|
const missingAuth0Config = !auth0Domain || !auth0WebClientID;
|
|
12
14
|
|
|
@@ -53,6 +55,10 @@ export class UserPayload {
|
|
|
53
55
|
}
|
|
54
56
|
|
|
55
57
|
export const getSigningKeys = (issuer: string) => (header: JwtHeader, cb: SigningKeyCallback) => {
|
|
58
|
+
if (!validationOptions[issuer]) {
|
|
59
|
+
throw new Error(`No validation options found for issuer ${issuer}`);
|
|
60
|
+
}
|
|
61
|
+
|
|
56
62
|
const jwksUri = validationOptions[issuer].jwksUri;
|
|
57
63
|
if (missingAuth0Config && missingAzureConfig) {
|
|
58
64
|
throw new MissingAuthError();
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { GraphQLError } from 'graphql';
|
|
2
|
+
|
|
3
|
+
export class TokenExpiredError extends GraphQLError {
|
|
4
|
+
constructor(expiryDate: Date, message = 'The provided token has expired. Please authenticate again.') {
|
|
5
|
+
super(message, {
|
|
6
|
+
extensions: {
|
|
7
|
+
code: 'JWT_EXPIRED',
|
|
8
|
+
expiryDate: expiryDate.toISOString(),
|
|
9
|
+
},
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
}
|
package/src/context.ts
CHANGED
|
@@ -9,6 +9,7 @@ import { getSigningKeys, validationOptions, verifyUserRecord } from './auth';
|
|
|
9
9
|
import { authCache } from './cache';
|
|
10
10
|
import { userEmailMap } from './config';
|
|
11
11
|
import { UserPayload } from './types';
|
|
12
|
+
import { TokenExpiredError } from './auth';
|
|
12
13
|
|
|
13
14
|
const verifyAsync = async (
|
|
14
15
|
issuer: string,
|
|
@@ -52,6 +53,11 @@ export const getUserPayload = async (
|
|
|
52
53
|
throw new AuthenticationError('Invalid token payload');
|
|
53
54
|
}
|
|
54
55
|
|
|
56
|
+
const expiryDate = new Date( (payload.exp ?? 0) * 1000);
|
|
57
|
+
if (expiryDate.getTime() <= Date.now()) {
|
|
58
|
+
throw new TokenExpiredError(expiryDate);
|
|
59
|
+
}
|
|
60
|
+
|
|
55
61
|
if (!authCache.has(token)) {
|
|
56
62
|
const issuer = payload.iss;
|
|
57
63
|
if (!issuer) {
|
|
@@ -83,7 +89,11 @@ export const getUserPayload = async (
|
|
|
83
89
|
return { userRecord, email, sessionId };
|
|
84
90
|
} catch (e) {
|
|
85
91
|
console.error(e);
|
|
86
|
-
|
|
92
|
+
if (e instanceof TokenExpiredError) {
|
|
93
|
+
throw e;
|
|
94
|
+
}
|
|
95
|
+
else
|
|
96
|
+
return {} as UserPayload;
|
|
87
97
|
}
|
|
88
98
|
};
|
|
89
99
|
|