@memberjunction/server 2.75.0 → 2.77.0
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/README.md +61 -2
- package/dist/apolloServer/index.d.ts.map +1 -1
- package/dist/apolloServer/index.js +1 -3
- package/dist/apolloServer/index.js.map +1 -1
- package/dist/auth/exampleNewUserSubClass.d.ts +1 -1
- package/dist/auth/exampleNewUserSubClass.d.ts.map +1 -1
- package/dist/auth/exampleNewUserSubClass.js +1 -1
- package/dist/auth/exampleNewUserSubClass.js.map +1 -1
- package/dist/auth/newUsers.js.map +1 -1
- package/dist/context.d.ts +5 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +34 -3
- package/dist/context.js.map +1 -1
- package/dist/entitySubclasses/entityPermissions.server.d.ts +2 -2
- package/dist/entitySubclasses/entityPermissions.server.d.ts.map +1 -1
- package/dist/entitySubclasses/entityPermissions.server.js +2 -2
- package/dist/entitySubclasses/entityPermissions.server.js.map +1 -1
- package/dist/generated/generated.d.ts +1787 -1628
- package/dist/generated/generated.d.ts.map +1 -1
- package/dist/generated/generated.js +5871 -4367
- package/dist/generated/generated.js.map +1 -1
- package/dist/generic/ResolverBase.d.ts +20 -21
- package/dist/generic/ResolverBase.d.ts.map +1 -1
- package/dist/generic/ResolverBase.js +75 -59
- package/dist/generic/ResolverBase.js.map +1 -1
- package/dist/generic/RunViewResolver.d.ts +8 -8
- package/dist/generic/RunViewResolver.d.ts.map +1 -1
- package/dist/generic/RunViewResolver.js +50 -48
- package/dist/generic/RunViewResolver.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/resolvers/AskSkipResolver.d.ts +6 -6
- package/dist/resolvers/AskSkipResolver.d.ts.map +1 -1
- package/dist/resolvers/AskSkipResolver.js +33 -21
- package/dist/resolvers/AskSkipResolver.js.map +1 -1
- package/dist/resolvers/CreateQueryResolver.d.ts +12 -3
- package/dist/resolvers/CreateQueryResolver.d.ts.map +1 -1
- package/dist/resolvers/CreateQueryResolver.js +121 -65
- package/dist/resolvers/CreateQueryResolver.js.map +1 -1
- package/dist/resolvers/EntityResolver.d.ts +1 -2
- package/dist/resolvers/EntityResolver.d.ts.map +1 -1
- package/dist/resolvers/EntityResolver.js +17 -9
- package/dist/resolvers/EntityResolver.js.map +1 -1
- package/dist/resolvers/FileCategoryResolver.d.ts +1 -1
- package/dist/resolvers/FileCategoryResolver.d.ts.map +1 -1
- package/dist/resolvers/FileCategoryResolver.js +9 -9
- package/dist/resolvers/FileCategoryResolver.js.map +1 -1
- package/dist/resolvers/FileResolver.d.ts.map +1 -1
- package/dist/resolvers/FileResolver.js +3 -1
- package/dist/resolvers/FileResolver.js.map +1 -1
- package/dist/resolvers/GetDataResolver.d.ts.map +1 -1
- package/dist/resolvers/GetDataResolver.js +3 -0
- package/dist/resolvers/GetDataResolver.js.map +1 -1
- package/dist/resolvers/MergeRecordsResolver.d.ts.map +1 -1
- package/dist/resolvers/MergeRecordsResolver.js +2 -1
- package/dist/resolvers/MergeRecordsResolver.js.map +1 -1
- package/dist/resolvers/QueryResolver.d.ts +4 -4
- package/dist/resolvers/QueryResolver.js +18 -18
- package/dist/resolvers/ReportResolver.js.map +1 -1
- package/dist/resolvers/SyncDataResolver.d.ts +8 -8
- package/dist/resolvers/SyncDataResolver.d.ts.map +1 -1
- package/dist/resolvers/SyncDataResolver.js +19 -19
- package/dist/resolvers/SyncDataResolver.js.map +1 -1
- package/dist/resolvers/SyncRolesUsersResolver.d.ts +10 -10
- package/dist/resolvers/SyncRolesUsersResolver.d.ts.map +1 -1
- package/dist/resolvers/SyncRolesUsersResolver.js +19 -19
- package/dist/resolvers/SyncRolesUsersResolver.js.map +1 -1
- package/dist/resolvers/TransactionGroupResolver.d.ts.map +1 -1
- package/dist/resolvers/TransactionGroupResolver.js.map +1 -1
- package/dist/resolvers/UserFavoriteResolver.d.ts +2 -2
- package/dist/resolvers/UserFavoriteResolver.d.ts.map +1 -1
- package/dist/resolvers/UserFavoriteResolver.js +7 -4
- package/dist/resolvers/UserFavoriteResolver.js.map +1 -1
- package/dist/resolvers/UserResolver.d.ts +3 -3
- package/dist/resolvers/UserResolver.d.ts.map +1 -1
- package/dist/resolvers/UserResolver.js +10 -6
- package/dist/resolvers/UserResolver.js.map +1 -1
- package/dist/resolvers/UserViewResolver.d.ts +2 -2
- package/dist/resolvers/UserViewResolver.d.ts.map +1 -1
- package/dist/resolvers/UserViewResolver.js +11 -6
- package/dist/resolvers/UserViewResolver.js.map +1 -1
- package/dist/scheduler/LearningCycleScheduler.d.ts.map +1 -1
- package/dist/scheduler/LearningCycleScheduler.js +7 -1
- package/dist/scheduler/LearningCycleScheduler.js.map +1 -1
- package/dist/types.d.ts +7 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -1
- package/dist/util.d.ts +8 -1
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +28 -0
- package/dist/util.js.map +1 -1
- package/package.json +34 -34
- package/src/apolloServer/index.ts +3 -3
- package/src/auth/exampleNewUserSubClass.ts +3 -2
- package/src/auth/newUsers.ts +1 -1
- package/src/context.ts +49 -9
- package/src/entitySubclasses/entityPermissions.server.ts +3 -3
- package/src/generated/generated.ts +5506 -4368
- package/src/generic/ResolverBase.ts +103 -86
- package/src/generic/RunViewResolver.ts +55 -54
- package/src/index.ts +1 -1
- package/src/resolvers/AskSkipResolver.ts +44 -23
- package/src/resolvers/CreateQueryResolver.ts +104 -62
- package/src/resolvers/EntityResolver.ts +18 -9
- package/src/resolvers/FileCategoryResolver.ts +12 -9
- package/src/resolvers/FileResolver.ts +4 -2
- package/src/resolvers/GetDataResolver.ts +3 -0
- package/src/resolvers/MergeRecordsResolver.ts +2 -1
- package/src/resolvers/QueryResolver.ts +14 -14
- package/src/resolvers/ReportResolver.ts +1 -1
- package/src/resolvers/SyncDataResolver.ts +21 -21
- package/src/resolvers/SyncRolesUsersResolver.ts +24 -21
- package/src/resolvers/TransactionGroupResolver.ts +1 -1
- package/src/resolvers/UserFavoriteResolver.ts +7 -5
- package/src/resolvers/UserResolver.ts +10 -6
- package/src/resolvers/UserViewResolver.ts +13 -7
- package/src/scheduler/LearningCycleScheduler.ts +10 -4
- package/src/types.ts +14 -4
- package/src/util.ts +45 -2
- package/dist/apolloServer/TransactionPlugin.d.ts +0 -4
- package/dist/apolloServer/TransactionPlugin.d.ts.map +0 -1
- package/dist/apolloServer/TransactionPlugin.js +0 -46
- package/dist/apolloServer/TransactionPlugin.js.map +0 -1
- package/src/apolloServer/TransactionPlugin.ts +0 -53
package/dist/util.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { DataSourceInfo } from './types';
|
|
1
|
+
import { DataSourceInfo, ProviderInfo } from './types';
|
|
2
2
|
import sql from 'mssql';
|
|
3
|
+
import { DatabaseProviderBase } from '@memberjunction/core';
|
|
3
4
|
type StreamCallback = (jsonObject: any) => void;
|
|
4
5
|
export declare function sendPostRequest(url: string, payload: any, useCompression: boolean, headers: Record<string, string> | null, streamCallback?: StreamCallback): Promise<any[]>;
|
|
5
6
|
export declare function GetReadOnlyDataSource(dataSources: DataSourceInfo[], options?: {
|
|
@@ -7,6 +8,12 @@ export declare function GetReadOnlyDataSource(dataSources: DataSourceInfo[], opt
|
|
|
7
8
|
}): sql.ConnectionPool & {
|
|
8
9
|
query: (sql: string, params?: any) => Promise<any[]>;
|
|
9
10
|
};
|
|
11
|
+
export declare function GetReadOnlyProvider(providers: Array<ProviderInfo>, options?: {
|
|
12
|
+
allowFallbackToReadWrite: boolean;
|
|
13
|
+
}): DatabaseProviderBase;
|
|
14
|
+
export declare function GetReadWriteProvider(providers: Array<ProviderInfo>, options?: {
|
|
15
|
+
allowFallbackToReadOnly: boolean;
|
|
16
|
+
}): DatabaseProviderBase;
|
|
10
17
|
export declare function GetReadWriteDataSource(dataSources: DataSourceInfo[]): sql.ConnectionPool & {
|
|
11
18
|
query: (sql: string, params?: any) => Promise<any[]>;
|
|
12
19
|
};
|
package/dist/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,GAAG,MAAM,OAAO,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAI5D,KAAK,cAAc,GAAG,CAAC,UAAU,EAAE,GAAG,KAAK,IAAI,CAAC;AAahD,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,EAAE,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAyFjL;AASC,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,cAAc,EAAE,EAAE,OAAO,CAAC,EAAE;IAAC,wBAAwB,EAAE,OAAO,CAAA;CAAC,GAAG,GAAG,CAAC,cAAc,GAAG;IAAE,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;CAAE,CAcjM;AAOD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,EAAE;IAAC,wBAAwB,EAAE,OAAO,CAAA;CAAC,GAAG,oBAAoB,CAcvI;AAOD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,EAAE;IAAC,uBAAuB,EAAE,OAAO,CAAA;CAAC,GAAG,oBAAoB,CAcvI;AAOD,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,cAAc,EAAE,GAAG,GAAG,CAAC,cAAc,GAAG;IAAE,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;CAAE,CAMnJ;AAMD,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC,cAAc,GAAG;IAAE,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;CAAE,CAmBrJ"}
|
package/dist/util.js
CHANGED
|
@@ -102,6 +102,34 @@ export function GetReadOnlyDataSource(dataSources, options) {
|
|
|
102
102
|
}
|
|
103
103
|
throw new Error('No suitable data source found');
|
|
104
104
|
}
|
|
105
|
+
export function GetReadOnlyProvider(providers, options) {
|
|
106
|
+
if (!providers || providers.length === 0)
|
|
107
|
+
return null;
|
|
108
|
+
const readOnlyProvider = providers.find((p) => p.type === 'Read-Only');
|
|
109
|
+
if (readOnlyProvider) {
|
|
110
|
+
return readOnlyProvider.provider;
|
|
111
|
+
}
|
|
112
|
+
else if (options?.allowFallbackToReadWrite) {
|
|
113
|
+
return providers[0].provider;
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
export function GetReadWriteProvider(providers, options) {
|
|
120
|
+
if (!providers || providers.length === 0)
|
|
121
|
+
return null;
|
|
122
|
+
const readWriteProvider = providers.find((p) => p.type === 'Read-Write');
|
|
123
|
+
if (readWriteProvider) {
|
|
124
|
+
return readWriteProvider.provider;
|
|
125
|
+
}
|
|
126
|
+
else if (options?.allowFallbackToReadOnly) {
|
|
127
|
+
return GetReadOnlyProvider(providers, { allowFallbackToReadWrite: false });
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
105
133
|
export function GetReadWriteDataSource(dataSources) {
|
|
106
134
|
const readWriteDataSource = dataSources.find((ds) => ds.type === 'Read-Write');
|
|
107
135
|
if (readWriteDataSource) {
|
package/dist/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAAE,IAAI,IAAI,YAAY,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,GAAG,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/server",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.77.0",
|
|
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",
|
|
@@ -22,39 +22,39 @@
|
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@apollo/server": "^4.9.1",
|
|
24
24
|
"@graphql-tools/utils": "^10.0.1",
|
|
25
|
-
"@memberjunction/actions": "2.
|
|
26
|
-
"@memberjunction/ai": "2.
|
|
27
|
-
"@memberjunction/ai-core-plus": "2.
|
|
28
|
-
"@memberjunction/ai-agents": "2.
|
|
29
|
-
"@memberjunction/aiengine": "2.
|
|
30
|
-
"@memberjunction/ai-prompts": "2.
|
|
31
|
-
"@memberjunction/ai-agent-manager-actions": "2.
|
|
32
|
-
"@memberjunction/ai-mistral": "2.
|
|
33
|
-
"@memberjunction/ai-openai": "2.
|
|
34
|
-
"@memberjunction/ai-anthropic": "2.
|
|
35
|
-
"@memberjunction/ai-groq": "2.
|
|
36
|
-
"@memberjunction/ai-cerebras": "2.
|
|
37
|
-
"@memberjunction/ai-vectors-pinecone": "2.
|
|
38
|
-
"@memberjunction/core": "2.
|
|
39
|
-
"@memberjunction/core-actions": "2.
|
|
40
|
-
"@memberjunction/actions-bizapps-accounting": "2.
|
|
41
|
-
"@memberjunction/actions-bizapps-crm": "2.
|
|
42
|
-
"@memberjunction/actions-bizapps-lms": "2.
|
|
43
|
-
"@memberjunction/actions-bizapps-social": "2.
|
|
44
|
-
"@memberjunction/core-entities": "2.
|
|
45
|
-
"@memberjunction/core-entities-server": "2.
|
|
46
|
-
"@memberjunction/data-context": "2.
|
|
47
|
-
"@memberjunction/data-context-server": "2.
|
|
48
|
-
"@memberjunction/doc-utils": "2.
|
|
49
|
-
"@memberjunction/entity-communications-server": "2.
|
|
50
|
-
"@memberjunction/external-change-detection": "2.
|
|
51
|
-
"@memberjunction/global": "2.
|
|
52
|
-
"@memberjunction/graphql-dataprovider": "2.
|
|
53
|
-
"@memberjunction/queue": "2.
|
|
54
|
-
"@memberjunction/skip-types": "2.
|
|
55
|
-
"@memberjunction/sqlserver-dataprovider": "2.
|
|
56
|
-
"@memberjunction/storage": "2.
|
|
57
|
-
"@memberjunction/templates": "2.
|
|
25
|
+
"@memberjunction/actions": "2.77.0",
|
|
26
|
+
"@memberjunction/ai": "2.77.0",
|
|
27
|
+
"@memberjunction/ai-core-plus": "2.77.0",
|
|
28
|
+
"@memberjunction/ai-agents": "2.77.0",
|
|
29
|
+
"@memberjunction/aiengine": "2.77.0",
|
|
30
|
+
"@memberjunction/ai-prompts": "2.77.0",
|
|
31
|
+
"@memberjunction/ai-agent-manager-actions": "2.77.0",
|
|
32
|
+
"@memberjunction/ai-mistral": "2.77.0",
|
|
33
|
+
"@memberjunction/ai-openai": "2.77.0",
|
|
34
|
+
"@memberjunction/ai-anthropic": "2.77.0",
|
|
35
|
+
"@memberjunction/ai-groq": "2.77.0",
|
|
36
|
+
"@memberjunction/ai-cerebras": "2.77.0",
|
|
37
|
+
"@memberjunction/ai-vectors-pinecone": "2.77.0",
|
|
38
|
+
"@memberjunction/core": "2.77.0",
|
|
39
|
+
"@memberjunction/core-actions": "2.77.0",
|
|
40
|
+
"@memberjunction/actions-bizapps-accounting": "2.77.0",
|
|
41
|
+
"@memberjunction/actions-bizapps-crm": "2.77.0",
|
|
42
|
+
"@memberjunction/actions-bizapps-lms": "2.77.0",
|
|
43
|
+
"@memberjunction/actions-bizapps-social": "2.77.0",
|
|
44
|
+
"@memberjunction/core-entities": "2.77.0",
|
|
45
|
+
"@memberjunction/core-entities-server": "2.77.0",
|
|
46
|
+
"@memberjunction/data-context": "2.77.0",
|
|
47
|
+
"@memberjunction/data-context-server": "2.77.0",
|
|
48
|
+
"@memberjunction/doc-utils": "2.77.0",
|
|
49
|
+
"@memberjunction/entity-communications-server": "2.77.0",
|
|
50
|
+
"@memberjunction/external-change-detection": "2.77.0",
|
|
51
|
+
"@memberjunction/global": "2.77.0",
|
|
52
|
+
"@memberjunction/graphql-dataprovider": "2.77.0",
|
|
53
|
+
"@memberjunction/queue": "2.77.0",
|
|
54
|
+
"@memberjunction/skip-types": "2.77.0",
|
|
55
|
+
"@memberjunction/sqlserver-dataprovider": "2.77.0",
|
|
56
|
+
"@memberjunction/storage": "2.77.0",
|
|
57
|
+
"@memberjunction/templates": "2.77.0",
|
|
58
58
|
"@types/compression": "^1.7.5",
|
|
59
59
|
"@types/cors": "^2.8.13",
|
|
60
60
|
"@types/jsonwebtoken": "9.0.6",
|
|
@@ -4,7 +4,8 @@ import { Disposable } from 'graphql-ws';
|
|
|
4
4
|
import { Server } from 'http';
|
|
5
5
|
import { enableIntrospection } from '../config.js';
|
|
6
6
|
import { AppContext } from '../types.js';
|
|
7
|
-
import {
|
|
7
|
+
import { Metadata } from '@memberjunction/core';
|
|
8
|
+
import { SQLServerDataProvider } from '@memberjunction/sqlserver-dataprovider';
|
|
8
9
|
|
|
9
10
|
const buildApolloServer = (
|
|
10
11
|
configOverride: ApolloServerOptions<AppContext>,
|
|
@@ -15,7 +16,6 @@ const buildApolloServer = (
|
|
|
15
16
|
cache: 'bounded',
|
|
16
17
|
plugins: [
|
|
17
18
|
ApolloServerPluginDrainHttpServer({ httpServer }),
|
|
18
|
-
TransactionPlugin,
|
|
19
19
|
{
|
|
20
20
|
async serverWillStart() {
|
|
21
21
|
return {
|
|
@@ -24,7 +24,7 @@ const buildApolloServer = (
|
|
|
24
24
|
},
|
|
25
25
|
};
|
|
26
26
|
},
|
|
27
|
-
}
|
|
27
|
+
}
|
|
28
28
|
],
|
|
29
29
|
introspection: enableIntrospection,
|
|
30
30
|
...configOverride,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { RegisterClass } from '@memberjunction/global';
|
|
2
|
-
import { Metadata, RunView, LogError } from '@memberjunction/core';
|
|
2
|
+
import { Metadata, RunView, LogError, EntitySaveOptions } from '@memberjunction/core';
|
|
3
3
|
import { NewUserBase } from './newUsers.js';
|
|
4
4
|
import { UserCache } from '@memberjunction/sqlserver-dataprovider';
|
|
5
5
|
import { configInfo } from '../config.js';
|
|
@@ -13,9 +13,10 @@ import { configInfo } from '../config.js';
|
|
|
13
13
|
// so that your class is actually used.
|
|
14
14
|
//@RegisterClass(NewUserBase, undefined, 1) /*by putting 1 into the priority setting, MJGlobal ClassFactory will use this instead of the base class as that registration had no priority*/
|
|
15
15
|
export class ExampleNewUserSubClass extends NewUserBase {
|
|
16
|
-
public override async createNewUser(firstName: string, lastName: string, email: string) {
|
|
16
|
+
public override async createNewUser(firstName: string, lastName: string, email: string, linkedRecordType: string = 'None', linkedEntityId?: string, linkedEntityRecordId?: string) {
|
|
17
17
|
try {
|
|
18
18
|
const md = new Metadata();
|
|
19
|
+
|
|
19
20
|
const contextUser = UserCache.Instance.Users.find(
|
|
20
21
|
(u) => u.Email.trim().toLowerCase() === configInfo?.userHandling?.contextUserForNewUserCreation?.trim().toLowerCase()
|
|
21
22
|
);
|
package/src/auth/newUsers.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ApplicationInfo, LogError, LogStatus, Metadata, RunView, RunViewResult, UserInfo } from "@memberjunction/core";
|
|
1
|
+
import { ApplicationInfo, EntitySaveOptions, LogError, LogStatus, Metadata, RunView, RunViewResult, UserInfo } from "@memberjunction/core";
|
|
2
2
|
import { RegisterClass } from "@memberjunction/global";
|
|
3
3
|
import { UserCache } from "@memberjunction/sqlserver-dataprovider";
|
|
4
4
|
import { configInfo } from "../config.js";
|
package/src/context.ts
CHANGED
|
@@ -7,10 +7,14 @@ import { AuthenticationError, AuthorizationError } from 'type-graphql';
|
|
|
7
7
|
import sql from 'mssql';
|
|
8
8
|
import { getSigningKeys, getSystemUser, validationOptions, verifyUserRecord } from './auth/index.js';
|
|
9
9
|
import { authCache } from './cache.js';
|
|
10
|
-
import { userEmailMap, apiKey } from './config.js';
|
|
10
|
+
import { userEmailMap, apiKey, mj_core_schema } from './config.js';
|
|
11
11
|
import { DataSourceInfo, UserPayload } from './types.js';
|
|
12
12
|
import { TokenExpiredError } from './auth/index.js';
|
|
13
13
|
import { GetReadOnlyDataSource, GetReadWriteDataSource } from './util.js';
|
|
14
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
15
|
+
import e from 'express';
|
|
16
|
+
import { DatabaseProviderBase } from '@memberjunction/core';
|
|
17
|
+
import { SQLServerDataProvider, SQLServerProviderConfigData } from '@memberjunction/sqlserver-dataprovider';
|
|
14
18
|
|
|
15
19
|
const verifyAsync = async (issuer: string, options: jwt.VerifyOptions, token: string): Promise<jwt.JwtPayload> =>
|
|
16
20
|
new Promise((resolve, reject) => {
|
|
@@ -32,7 +36,7 @@ export const getUserPayload = async (
|
|
|
32
36
|
sessionId = 'default',
|
|
33
37
|
dataSources: DataSourceInfo[],
|
|
34
38
|
requestDomain?: string,
|
|
35
|
-
requestApiKey?: string
|
|
39
|
+
requestApiKey?: string
|
|
36
40
|
): Promise<UserPayload> => {
|
|
37
41
|
try {
|
|
38
42
|
const readOnlyDataSource = GetReadOnlyDataSource(dataSources, { allowFallbackToReadWrite: true });
|
|
@@ -109,26 +113,62 @@ export const contextFunction =
|
|
|
109
113
|
async ({ req }: { req: IncomingMessage }) => {
|
|
110
114
|
await firstValueFrom(setupComplete$); // wait for setup to complete before processing the request
|
|
111
115
|
|
|
116
|
+
// Extract request data first (synchronous operations)
|
|
112
117
|
const sessionIdRaw = req.headers['x-session-id'];
|
|
113
118
|
const requestDomain = url.parse(req.headers.origin || '');
|
|
114
119
|
const sessionId = sessionIdRaw ? sessionIdRaw.toString() : '';
|
|
115
120
|
const bearerToken = req.headers.authorization ?? '';
|
|
116
|
-
|
|
117
121
|
const apiKey = String(req.headers['x-mj-api-key']);
|
|
122
|
+
|
|
123
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
124
|
+
const operationName: string | undefined = (req as any).body?.operationName;
|
|
125
|
+
if (operationName !== 'IntrospectionQuery') {
|
|
126
|
+
console.log({ operationName });
|
|
127
|
+
}
|
|
118
128
|
|
|
119
129
|
const userPayload = await getUserPayload(
|
|
120
130
|
bearerToken,
|
|
121
131
|
sessionId,
|
|
122
132
|
dataSources,
|
|
123
133
|
requestDomain?.hostname ? requestDomain.hostname : undefined,
|
|
124
|
-
apiKey
|
|
134
|
+
apiKey
|
|
125
135
|
);
|
|
126
136
|
|
|
127
|
-
//
|
|
128
|
-
const
|
|
129
|
-
|
|
130
|
-
|
|
137
|
+
// now create a new instance of SQLServerDataProvider for each request
|
|
138
|
+
const config = new SQLServerProviderConfigData(dataSource, mj_core_schema, 0, undefined, undefined, false);
|
|
139
|
+
const p = new SQLServerDataProvider();
|
|
140
|
+
await p.Config(config);
|
|
141
|
+
|
|
142
|
+
let rp = null;
|
|
143
|
+
try {
|
|
144
|
+
const readOnlyDataSource = GetReadOnlyDataSource(dataSources, { allowFallbackToReadWrite: false });
|
|
145
|
+
if (readOnlyDataSource) {
|
|
146
|
+
rp = new SQLServerDataProvider();
|
|
147
|
+
const rConfig = new SQLServerProviderConfigData(readOnlyDataSource, mj_core_schema, 0, undefined, undefined, false);
|
|
148
|
+
await rp.Config(rConfig);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
catch (e) {
|
|
152
|
+
// no read only data source available, so rp will remain null, this is OK!
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
const providers = [{
|
|
156
|
+
provider: p,
|
|
157
|
+
type: 'Read-Write' as 'Read-Write' | 'Read-Only'
|
|
158
|
+
}];
|
|
159
|
+
if (rp) {
|
|
160
|
+
providers.push({
|
|
161
|
+
provider: rp,
|
|
162
|
+
type: 'Read-Only' as 'Read-Write' | 'Read-Only'
|
|
163
|
+
});
|
|
131
164
|
}
|
|
132
165
|
|
|
133
|
-
|
|
166
|
+
const contextResult = {
|
|
167
|
+
dataSource,
|
|
168
|
+
dataSources,
|
|
169
|
+
userPayload: userPayload,
|
|
170
|
+
providers,
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
return contextResult;
|
|
134
174
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { RegisterClass } from '@memberjunction/global';
|
|
2
|
-
import { BaseEntity, EntitySaveOptions } from '@memberjunction/core';
|
|
2
|
+
import { BaseEntity, EntityDeleteOptions, EntitySaveOptions } from '@memberjunction/core';
|
|
3
3
|
import { EntityPermissionEntity } from '@memberjunction/core-entities';
|
|
4
4
|
import axios from 'axios';
|
|
5
5
|
import { ___codeGenAPIPort, ___codeGenAPISubmissionDelay, ___codeGenAPIURL } from '../config.js';
|
|
@@ -94,8 +94,8 @@ export class EntityPermissionsEntity_Server extends EntityPermissionEntity {
|
|
|
94
94
|
return super.Save(options);
|
|
95
95
|
}
|
|
96
96
|
|
|
97
|
-
override async Delete(): Promise<boolean> {
|
|
98
|
-
const success = await super.Delete();
|
|
97
|
+
override async Delete(options: EntityDeleteOptions): Promise<boolean> {
|
|
98
|
+
const success = await super.Delete(options);
|
|
99
99
|
|
|
100
100
|
// simply queue up the entity ID if the delete worked
|
|
101
101
|
if (success) EntityPermissionsEntity_Server.AddToQueue(this.EntityID);
|