@balena/pinejs 17.1.0-build-joshbwlng-tasks-e3dcb0e73ea9c960af553c67cbf7121650f8d1ea-1 → 17.1.0
Sign up to get free protection for your applications and to get access to all the features.
- package/.pinejs-cache.json +1 -1
- package/.versionbot/CHANGELOG.yml +227 -13
- package/CHANGELOG.md +70 -4
- package/out/config-loader/env.d.ts +0 -4
- package/out/config-loader/env.js +1 -5
- package/out/config-loader/env.js.map +1 -1
- package/out/data-server/sbvr-server.js +3 -2
- package/out/data-server/sbvr-server.js.map +1 -1
- package/out/database-layer/db.d.ts +0 -3
- package/out/database-layer/db.js +0 -17
- package/out/database-layer/db.js.map +1 -1
- package/out/migrator/migrations.d.ts +58 -0
- package/out/migrator/migrations.js +3 -0
- package/out/migrator/migrations.js.map +1 -0
- package/out/migrator/sync.d.ts +17 -0
- package/out/migrator/sync.js +39 -40
- package/out/migrator/sync.js.map +1 -1
- package/out/sbvr-api/dev.d.ts +22 -0
- package/out/sbvr-api/dev.js +3 -0
- package/out/sbvr-api/dev.js.map +1 -0
- package/out/sbvr-api/hooks.d.ts +28 -28
- package/out/sbvr-api/hooks.js.map +1 -1
- package/out/sbvr-api/permissions.d.ts +26 -2
- package/out/sbvr-api/permissions.js +39 -40
- package/out/sbvr-api/permissions.js.map +1 -1
- package/out/sbvr-api/sbvr-utils.d.ts +46 -6
- package/out/sbvr-api/sbvr-utils.js +44 -44
- package/out/sbvr-api/sbvr-utils.js.map +1 -1
- package/out/sbvr-api/user.d.ts +236 -0
- package/out/sbvr-api/user.js +3 -0
- package/out/sbvr-api/user.js.map +1 -0
- package/out/server-glue/module.d.ts +0 -1
- package/out/server-glue/module.js +1 -4
- package/out/server-glue/module.js.map +1 -1
- package/package.json +20 -21
- package/src/config-loader/env.ts +1 -6
- package/src/data-server/sbvr-server.js +3 -2
- package/src/database-layer/db.ts +0 -25
- package/src/migrator/migrations.ts +64 -0
- package/src/migrator/sync.ts +46 -41
- package/src/sbvr-api/dev.ts +26 -0
- package/src/sbvr-api/hooks.ts +19 -18
- package/src/sbvr-api/permissions.ts +54 -48
- package/src/sbvr-api/sbvr-utils.ts +93 -53
- package/src/sbvr-api/user.ts +216 -0
- package/src/server-glue/module.ts +0 -3
- package/out/tasks/common.d.ts +0 -4
- package/out/tasks/common.js +0 -11
- package/out/tasks/common.js.map +0 -1
- package/out/tasks/index.d.ts +0 -8
- package/out/tasks/index.js +0 -140
- package/out/tasks/index.js.map +0 -1
- package/out/tasks/tasks.sbvr +0 -55
- package/out/tasks/types.d.ts +0 -37
- package/out/tasks/types.js +0 -10
- package/out/tasks/types.js.map +0 -1
- package/out/tasks/worker.d.ts +0 -16
- package/out/tasks/worker.js +0 -226
- package/out/tasks/worker.js.map +0 -1
- package/src/tasks/common.ts +0 -9
- package/src/tasks/index.ts +0 -155
- package/src/tasks/tasks.sbvr +0 -55
- package/src/tasks/types.ts +0 -56
- package/src/tasks/worker.ts +0 -276
@@ -0,0 +1,58 @@
|
|
1
|
+
import type { Types } from '@balena/abstract-sql-to-typescript';
|
2
|
+
export interface Migration {
|
3
|
+
Read: {
|
4
|
+
created_at: Types['Date Time']['Read'];
|
5
|
+
modified_at: Types['Date Time']['Read'];
|
6
|
+
model_name: Types['Short Text']['Read'];
|
7
|
+
executed_migrations: Types['JSON']['Read'];
|
8
|
+
};
|
9
|
+
Write: {
|
10
|
+
created_at: Types['Date Time']['Write'];
|
11
|
+
modified_at: Types['Date Time']['Write'];
|
12
|
+
model_name: Types['Short Text']['Write'];
|
13
|
+
executed_migrations: Types['JSON']['Write'];
|
14
|
+
};
|
15
|
+
}
|
16
|
+
export interface MigrationLock {
|
17
|
+
Read: {
|
18
|
+
created_at: Types['Date Time']['Read'];
|
19
|
+
modified_at: Types['Date Time']['Read'];
|
20
|
+
model_name: Types['Short Text']['Read'];
|
21
|
+
};
|
22
|
+
Write: {
|
23
|
+
created_at: Types['Date Time']['Write'];
|
24
|
+
modified_at: Types['Date Time']['Write'];
|
25
|
+
model_name: Types['Short Text']['Write'];
|
26
|
+
};
|
27
|
+
}
|
28
|
+
export interface MigrationStatus {
|
29
|
+
Read: {
|
30
|
+
created_at: Types['Date Time']['Read'];
|
31
|
+
modified_at: Types['Date Time']['Read'];
|
32
|
+
migration_key: Types['Short Text']['Read'];
|
33
|
+
start_time: Types['Date Time']['Read'] | null;
|
34
|
+
last_run_time: Types['Date Time']['Read'] | null;
|
35
|
+
run_count: Types['Integer']['Read'];
|
36
|
+
migrated_row_count: Types['Integer']['Read'] | null;
|
37
|
+
error_count: Types['Integer']['Read'] | null;
|
38
|
+
is_backing_off: Types['Boolean']['Read'];
|
39
|
+
converged_time: Types['Date Time']['Read'] | null;
|
40
|
+
};
|
41
|
+
Write: {
|
42
|
+
created_at: Types['Date Time']['Write'];
|
43
|
+
modified_at: Types['Date Time']['Write'];
|
44
|
+
migration_key: Types['Short Text']['Write'];
|
45
|
+
start_time: Types['Date Time']['Write'] | null;
|
46
|
+
last_run_time: Types['Date Time']['Write'] | null;
|
47
|
+
run_count: Types['Integer']['Write'];
|
48
|
+
migrated_row_count: Types['Integer']['Write'] | null;
|
49
|
+
error_count: Types['Integer']['Write'] | null;
|
50
|
+
is_backing_off: Types['Boolean']['Write'];
|
51
|
+
converged_time: Types['Date Time']['Write'] | null;
|
52
|
+
};
|
53
|
+
}
|
54
|
+
export default interface $Model {
|
55
|
+
migration: Migration;
|
56
|
+
migration_lock: MigrationLock;
|
57
|
+
migration_status: MigrationStatus;
|
58
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/migrator/migrations.ts"],"names":[],"mappings":""}
|
package/out/migrator/sync.d.ts
CHANGED
@@ -1,10 +1,27 @@
|
|
1
|
+
import type MigrationsModel from './migrations';
|
1
2
|
import { type MigrationExecutionResult } from './utils';
|
2
3
|
import type { Tx } from '../database-layer/db';
|
3
4
|
import type { Config, Model } from '../config-loader/config-loader';
|
5
|
+
import * as sbvrUtils from '../sbvr-api/sbvr-utils';
|
4
6
|
type ApiRootModel = Model & {
|
5
7
|
apiRoot: string;
|
6
8
|
};
|
7
9
|
export declare const postRun: (tx: Tx, model: ApiRootModel) => Promise<void>;
|
8
10
|
export declare const run: (tx: Tx, model: ApiRootModel) => Promise<MigrationExecutionResult>;
|
11
|
+
declare module '../sbvr-api/sbvr-utils' {
|
12
|
+
interface API {
|
13
|
+
[migrationModelConfig.apiRoot]: PinejsClient<MigrationsModel>;
|
14
|
+
}
|
15
|
+
}
|
16
|
+
declare const migrationModelConfig: {
|
17
|
+
readonly modelName: "migrations";
|
18
|
+
readonly apiRoot: "migrations";
|
19
|
+
readonly modelText: any;
|
20
|
+
readonly migrations: {
|
21
|
+
readonly '11.0.0-modified-at': "\n\t\t\tALTER TABLE \"migration\"\n\t\t\tADD COLUMN IF NOT EXISTS \"modified at\" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;\n\t\t";
|
22
|
+
readonly '11.0.1-modified-at': "\n\t\t\tALTER TABLE \"migration lock\"\n\t\t\tADD COLUMN IF NOT EXISTS \"modified at\" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;\n\t\t";
|
23
|
+
readonly '15.0.0-data-types': (tx: Tx, { db }: typeof sbvrUtils) => Promise<void>;
|
24
|
+
};
|
25
|
+
};
|
9
26
|
export declare const config: Config;
|
10
27
|
export {};
|
package/out/migrator/sync.js
CHANGED
@@ -30,7 +30,7 @@ exports.config = exports.run = exports.postRun = void 0;
|
|
30
30
|
const utils_1 = require("./utils");
|
31
31
|
const lodash_1 = __importDefault(require("lodash"));
|
32
32
|
const sbvrUtils = __importStar(require("../sbvr-api/sbvr-utils"));
|
33
|
-
const
|
33
|
+
const migrationsModel = require('./migrations.sbvr');
|
34
34
|
const postRun = async (tx, model) => {
|
35
35
|
const { initSql } = model;
|
36
36
|
if (initSql == null) {
|
@@ -111,45 +111,44 @@ const executeMigration = async (tx, [key, migration]) => {
|
|
111
111
|
throw new utils_1.MigrationError(`Invalid migration type: ${typeof migration}`);
|
112
112
|
}
|
113
113
|
};
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
'
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
break;
|
149
|
-
}
|
150
|
-
},
|
151
|
-
},
|
114
|
+
const migrationModelConfig = {
|
115
|
+
modelName: 'migrations',
|
116
|
+
apiRoot: 'migrations',
|
117
|
+
modelText: migrationsModel,
|
118
|
+
migrations: {
|
119
|
+
'11.0.0-modified-at': `
|
120
|
+
ALTER TABLE "migration"
|
121
|
+
ADD COLUMN IF NOT EXISTS "modified at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;
|
122
|
+
`,
|
123
|
+
'11.0.1-modified-at': `
|
124
|
+
ALTER TABLE "migration lock"
|
125
|
+
ADD COLUMN IF NOT EXISTS "modified at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;
|
126
|
+
`,
|
127
|
+
'15.0.0-data-types': async (tx, { db }) => {
|
128
|
+
switch (db.engine) {
|
129
|
+
case 'mysql':
|
130
|
+
await tx.executeSql(`\
|
131
|
+
ALTER TABLE "migration"
|
132
|
+
MODIFY "executed migrations" JSON NOT NULL;`);
|
133
|
+
await tx.executeSql(`\
|
134
|
+
ALTER TABLE "migration status"
|
135
|
+
MODIFY "is backing off" BOOLEAN NOT NULL;`);
|
136
|
+
break;
|
137
|
+
case 'postgres':
|
138
|
+
await tx.executeSql(`\
|
139
|
+
ALTER TABLE "migration"
|
140
|
+
ALTER COLUMN "executed migrations" SET DATA TYPE JSONB USING "executed migrations"::JSONB;`);
|
141
|
+
await tx.executeSql(`\
|
142
|
+
ALTER TABLE "migration status"
|
143
|
+
ALTER COLUMN "is backing off" DROP DEFAULT,
|
144
|
+
ALTER COLUMN "is backing off" SET DATA TYPE BOOLEAN USING "is backing off"::BOOLEAN,
|
145
|
+
ALTER COLUMN "is backing off" SET DEFAULT FALSE;`);
|
146
|
+
break;
|
147
|
+
}
|
152
148
|
},
|
153
|
-
|
149
|
+
},
|
150
|
+
};
|
151
|
+
exports.config = {
|
152
|
+
models: [migrationModelConfig],
|
154
153
|
};
|
155
154
|
//# sourceMappingURL=sync.js.map
|
package/out/migrator/sync.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/migrator/sync.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/migrator/sync.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import type { Types } from '@balena/abstract-sql-to-typescript';
|
2
|
+
export interface Model {
|
3
|
+
Read: {
|
4
|
+
created_at: Types['Date Time']['Read'];
|
5
|
+
modified_at: Types['Date Time']['Read'];
|
6
|
+
id: Types['Serial']['Read'];
|
7
|
+
is_of__vocabulary: Types['Short Text']['Read'];
|
8
|
+
model_type: Types['Short Text']['Read'];
|
9
|
+
model_value: Types['JSON']['Read'];
|
10
|
+
};
|
11
|
+
Write: {
|
12
|
+
created_at: Types['Date Time']['Write'];
|
13
|
+
modified_at: Types['Date Time']['Write'];
|
14
|
+
id: Types['Serial']['Write'];
|
15
|
+
is_of__vocabulary: Types['Short Text']['Write'];
|
16
|
+
model_type: Types['Short Text']['Write'];
|
17
|
+
model_value: Types['JSON']['Write'];
|
18
|
+
};
|
19
|
+
}
|
20
|
+
export default interface $Model {
|
21
|
+
model: Model;
|
22
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/sbvr-api/dev.ts"],"names":[],"mappings":""}
|
package/out/sbvr-api/hooks.d.ts
CHANGED
@@ -3,7 +3,7 @@ import type { Result, Tx } from '../database-layer/db';
|
|
3
3
|
import type { ODataRequest, ParsedODataRequest } from './uri-parser';
|
4
4
|
import type { AnyObject } from 'pinejs-client-core';
|
5
5
|
import type { TypedError } from 'typed-error';
|
6
|
-
import { type
|
6
|
+
import { type User, type ApiKey, api, type Response } from './sbvr-utils';
|
7
7
|
export interface HookReq {
|
8
8
|
user?: User;
|
9
9
|
apiKey?: ApiKey;
|
@@ -17,29 +17,29 @@ export interface HookReq {
|
|
17
17
|
hooks?: InstantiatedHooks;
|
18
18
|
is?: (type: string | string[]) => string | false | null;
|
19
19
|
}
|
20
|
-
export interface HookArgs {
|
20
|
+
export interface HookArgs<Vocab extends string = string> {
|
21
21
|
req: HookReq;
|
22
22
|
request: ODataRequest;
|
23
|
-
api:
|
23
|
+
api: (typeof api)[Vocab];
|
24
24
|
tx?: Tx | undefined;
|
25
25
|
}
|
26
26
|
export type HookResponse = PromiseLike<any> | null | void;
|
27
|
-
export interface Hooks {
|
28
|
-
PREPARSE?: (options: Omit<HookArgs
|
29
|
-
POSTPARSE?: (options: HookArgs) => HookResponse;
|
30
|
-
PRERUN?: (options: HookArgs & {
|
27
|
+
export interface Hooks<Vocab extends string = string> {
|
28
|
+
PREPARSE?: (options: Omit<HookArgs<Vocab>, 'request' | 'api'>) => HookResponse;
|
29
|
+
POSTPARSE?: (options: HookArgs<Vocab>) => HookResponse;
|
30
|
+
PRERUN?: (options: HookArgs<Vocab> & {
|
31
31
|
tx: Tx;
|
32
32
|
}) => HookResponse;
|
33
|
-
POSTRUN?: (options: HookArgs & {
|
33
|
+
POSTRUN?: (options: HookArgs<Vocab> & {
|
34
34
|
tx: Tx;
|
35
35
|
result: Result | number | undefined;
|
36
36
|
}) => HookResponse;
|
37
|
-
PRERESPOND?: (options: HookArgs & {
|
37
|
+
PRERESPOND?: (options: HookArgs<Vocab> & {
|
38
38
|
tx: Tx;
|
39
39
|
result?: Result | number | AnyObject;
|
40
40
|
response: Response;
|
41
41
|
}) => HookResponse;
|
42
|
-
'POSTRUN-ERROR'?: (options: HookArgs & {
|
42
|
+
'POSTRUN-ERROR'?: (options: HookArgs<Vocab> & {
|
43
43
|
tx: Tx;
|
44
44
|
error: TypedError | any;
|
45
45
|
}) => HookResponse;
|
@@ -85,41 +85,41 @@ declare const apiHooks: {
|
|
85
85
|
DELETE: MethodHooks;
|
86
86
|
OPTIONS: MethodHooks;
|
87
87
|
};
|
88
|
-
export declare const addHook: (method: keyof typeof apiHooks, vocabulary:
|
89
|
-
PREPARSE?: HookBlueprint<(options: Omit<HookArgs
|
90
|
-
POSTPARSE?: HookBlueprint<(options: HookArgs) => HookResponse> | undefined;
|
91
|
-
PRERUN?: HookBlueprint<(options: HookArgs & {
|
88
|
+
export declare const addHook: <Vocab extends string>(method: keyof typeof apiHooks, vocabulary: Vocab, resourceName: string, hooks: {
|
89
|
+
PREPARSE?: HookBlueprint<(options: Omit<HookArgs<string>, "request" | "api">) => HookResponse> | undefined;
|
90
|
+
POSTPARSE?: HookBlueprint<(options: HookArgs<string>) => HookResponse> | undefined;
|
91
|
+
PRERUN?: HookBlueprint<(options: HookArgs<string> & {
|
92
92
|
tx: Tx;
|
93
93
|
}) => HookResponse> | undefined;
|
94
|
-
POSTRUN?: HookBlueprint<(options: HookArgs & {
|
94
|
+
POSTRUN?: HookBlueprint<(options: HookArgs<string> & {
|
95
95
|
tx: Tx;
|
96
96
|
result: Result | number | undefined;
|
97
97
|
}) => HookResponse> | undefined;
|
98
|
-
PRERESPOND?: HookBlueprint<(options: HookArgs & {
|
98
|
+
PRERESPOND?: HookBlueprint<(options: HookArgs<string> & {
|
99
99
|
tx: Tx;
|
100
|
-
result?: Result |
|
100
|
+
result?: number | Result | AnyObject | undefined;
|
101
101
|
response: Response;
|
102
102
|
}) => HookResponse> | undefined;
|
103
|
-
'POSTRUN-ERROR'?: HookBlueprint<(options: HookArgs & {
|
103
|
+
'POSTRUN-ERROR'?: HookBlueprint<(options: HookArgs<string> & {
|
104
104
|
tx: Tx;
|
105
105
|
error: TypedError | any;
|
106
106
|
}) => HookResponse> | undefined;
|
107
107
|
} | ({
|
108
|
-
PREPARSE?: ((options: Omit<HookArgs
|
109
|
-
POSTPARSE?: ((options: HookArgs) => HookResponse) | undefined;
|
110
|
-
PRERUN?: ((options: HookArgs & {
|
108
|
+
PREPARSE?: ((options: Omit<HookArgs<string>, "request" | "api">) => HookResponse) | undefined;
|
109
|
+
POSTPARSE?: ((options: HookArgs<string>) => HookResponse) | undefined;
|
110
|
+
PRERUN?: ((options: HookArgs<string> & {
|
111
111
|
tx: Tx;
|
112
112
|
}) => HookResponse) | undefined;
|
113
|
-
POSTRUN?: ((options: HookArgs & {
|
113
|
+
POSTRUN?: ((options: HookArgs<string> & {
|
114
114
|
tx: Tx;
|
115
115
|
result: Result | number | undefined;
|
116
116
|
}) => HookResponse) | undefined;
|
117
|
-
PRERESPOND?: ((options: HookArgs & {
|
117
|
+
PRERESPOND?: ((options: HookArgs<string> & {
|
118
118
|
tx: Tx;
|
119
|
-
result?: Result |
|
119
|
+
result?: number | Result | AnyObject | undefined;
|
120
120
|
response: Response;
|
121
121
|
}) => HookResponse) | undefined;
|
122
|
-
'POSTRUN-ERROR'?: ((options: HookArgs & {
|
122
|
+
'POSTRUN-ERROR'?: ((options: HookArgs<string> & {
|
123
123
|
tx: Tx;
|
124
124
|
error: TypedError | any;
|
125
125
|
}) => HookResponse) | undefined;
|
@@ -127,8 +127,8 @@ export declare const addHook: (method: keyof typeof apiHooks, vocabulary: string
|
|
127
127
|
sideEffects: HookBlueprint<HookFn>['sideEffects'];
|
128
128
|
readOnlyTx: HookBlueprint<HookFn>['readOnlyTx'];
|
129
129
|
})) => void;
|
130
|
-
export declare const addSideEffectHook: (method: HookMethod, apiRoot:
|
131
|
-
export declare const addPureHook: (method: HookMethod, apiRoot:
|
130
|
+
export declare const addSideEffectHook: <Vocab extends string>(method: HookMethod, apiRoot: Vocab, resourceName: string, hooks: Hooks<NoInfer<Vocab>>) => void;
|
131
|
+
export declare const addPureHook: <Vocab extends string>(method: HookMethod, apiRoot: Vocab, resourceName: string, hooks: Hooks<NoInfer<Vocab>>) => void;
|
132
132
|
type RunHookArgs<T extends keyof Hooks> = Omit<Parameters<NonNullable<Hooks[T]>>[0], 'api'>;
|
133
|
-
export declare const runHooks: <T extends keyof Hooks
|
133
|
+
export declare const runHooks: <T extends keyof Hooks<string>>(hookName: T, hooksList: Array<[modelName: string, hooks: InstantiatedHooks]> | undefined, args: RunHookArgs<T>) => Promise<void>;
|
134
134
|
export {};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/sbvr-api/hooks.ts"],"names":[],"mappings":";;;;;;AAOA,oDAAuB;AACvB,iDAAiD;AACjD,wDAA+B;AAC/B,
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/sbvr-api/hooks.ts"],"names":[],"mappings":";;;;;;AAOA,oDAAuB;AACvB,iDAAiD;AACjD,wDAA+B;AAC/B,6CAOsB;AAkDtB,MAAM,SAAS,GAAuB;IACrC,UAAU;IACV,WAAW;IACX,QAAQ;IACR,SAAS;IACT,YAAY;IACZ,eAAe;CACf,CAAC;AACF,MAAM,WAAW,GAAG,CAAC,CAAM,EAAoB,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAaxE,MAAM,IAAI;IACD,MAAM,CAA6B;IACpC,UAAU,CAAiC;IAClD,YAAY,IAAsB;QACjC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,GAAG,IAAW;QAC9B,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;IAC5B,CAAC;CACD;AAED,MAAM,cAAiC,SAAQ,IAAO;IAC7C,WAAW,GAAqB,EAAE,CAAC;IACnC,UAAU,GAAY,KAAK,CAAC;IAE7B,gBAAgB,CAAC,EAAkB;QACzC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,KAAK,CAAC,KAAK,IAAI,EAAE;gBAChB,IAAI,CAAC;oBACJ,MAAM,EAAE,EAAE,CAAC;gBACZ,CAAC;gBAAC,MAAM,CAAC;gBAET,CAAC;YACF,CAAC,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3B,CAAC;IACF,CAAC;IAEM,KAAK,CAAC,QAAQ;QAEpB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,OAAO;QACR,CAAC;QAGD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,MAAM,IAAA,8BAAe,EAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC;CACD;AAGM,MAAM,oBAAoB,GAAG,CACnC,SAA2D,EACpD,EAAE;IACT,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO;IACR,CAAC;IACD,MAAM,eAAe,GAAG,SAAS;SAC/B,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAuB,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAChE,MAAM,CACN,CAAC,IAAI,EAAkC,EAAE,CAAC,IAAI,YAAY,cAAc,CACxE,CAAC;IACH,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO;IACR,CAAC;IACD,KAAK,IAAA,8BAAe,EAAC,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACpD,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC;AAjBW,QAAA,oBAAoB,wBAiB/B;AAEF,MAAM,gBAAgB,GAAG,CAAC,KAAqB,EAAqB,EAAE,CACrE,gBAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,SAAuC,EAAE,EAAE;IAC9D,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAC7B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACP,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACF,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEJ,MAAM,UAAU,GAAG,CAAC,CAAiB,EAAE,CAAiB,EAAkB,EAAE;IAC3E,OAAO,gBAAC,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACrC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACF,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,UAAsB,EAAE,YAAqB,EAAE,EAAE;IAC1E,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACX,CAAC;IAGD,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;QAC1B,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AAChE,CAAC,CAAC;AACF,MAAM,aAAa,GAAG,CACrB,WAAwB,EACxB,UAAkB,EAClB,YAAgC,EAChC,eAAwB,EACvB,EAAE;IACH,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC;IACX,CAAC;IACD,MAAM,UAAU,GAAG,gBAAgB,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC,CAAC;IAC3E,IAAI,CAAC,eAAe,EAAE,CAAC;QAEtB,OAAO,UAAU,CAAC;IACnB,CAAC;IACD,OAAO,UAAU,CAChB,UAAU,EACV,gBAAgB,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,CAClD,CAAC;AACH,CAAC,CAAC;AACF,MAAM,cAAc,GAAG,IAAA,kBAAO,EAC7B,CACC,MAAuB,EACvB,UAAkB,EAClB,YAAgC,EAChC,eAAwB,EACvB,EAAE,CACH,UAAU,CACT,aAAa,CACZ,QAAQ,CAAC,MAAM,CAAC,EAChB,UAAU,EACV,YAAY,EACZ,eAAe,CACf,EACD,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,CAAC,CACzE,EACF,EAAE,SAAS,EAAE,IAAI,EAAE,CACnB,CAAC;AACK,MAAM,QAAQ,GAAG,CACvB,OAGC,EACD,eAAwB,EACJ,EAAE;IACtB,IAAI,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IAC/B,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;QAC1B,YAAY,GAAG,IAAA,2BAAc,EAC5B,OAGC,CACD;aAEC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,gBAAgB,CACtB,cAAc,CACb,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,UAAU,EAClB,YAAY,EACZ,eAAe,CACf,CACD,CAAC;AACH,CAAC,CAAC;AA1BW,QAAA,QAAQ,YA0BnB;AACF,gBAAQ,CAAC,KAAK,GAAG,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;AAQ9C,MAAM,QAAQ,GAAG;IAChB,GAAG,EAAE,EAAiB;IACtB,GAAG,EAAE,EAAiB;IACtB,GAAG,EAAE,EAAiB;IACtB,IAAI,EAAE,EAAiB;IACvB,KAAK,EAAE,EAAiB;IACxB,KAAK,EAAE,EAAiB;IACxB,MAAM,EAAE,EAAiB;IACzB,OAAO,EAAE,EAAiB;CAC1B,CAAC;AAIF,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;AACzB,MAAM,OAAO,GAAG,CACtB,MAA6B,EAC7B,UAAiB,EACjB,YAAoB,EACpB,KAKK,EACJ,EAAE;IACH,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,MAAM,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;QAC1B,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACd,sFAAsF,YAAY,GAAG,CACrG,CAAC;QACH,CAAC;IACF,CAAC;SAAM,CAAC;QACP,IAAI,gBAAgB,CAAC;QACrB,IAAI,CAAC;YACJ,gBAAgB,GAAG,IAAA,gCAAmB,EAAC,EAAE,UAAU,EAAE,CAAC,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACR,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,UAAU,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;YAC5B,MAAM,gBAAgB,GAAG,YAAY,CAAC;YACtC,YAAY,GAAG,IAAA,2BAAc,EAAC,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;YAC5D,IAAI,gBAAgB,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,IAAI,EAAE,CAAC;gBACnD,MAAM,IAAI,KAAK,CACd,iCAAiC;oBAChC,gBAAgB;oBAChB,IAAI;oBACJ,UAAU,CACX,CAAC;YACH,CAAC;QACF,CAAC;IACF,CAAC;IAED,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAE/B,MAAM,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IAC7C,YAAY,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAElC,MAAM,aAAa,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IAEjD,IAAI,aAAa,IAAI,KAAK,IAAI,YAAY,IAAI,KAAK,EAAE,CAAC;QACrD,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;QAC1C,MAAM,gBAAgB,GAElB,EAAE,CAAC;QACP,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAClC,MAAM,MAAM,GAAuB,KAAK,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACpB,gBAAgB,CAAC,QAAQ,CAAC,GAAG;oBAC5B,MAAM;oBACN,WAAW;oBACX,UAAU;iBACV,CAAC;YACH,CAAC;QACF,CAAC;QACD,KAAK,GAAG,gBAAgB,CAAC;IAC1B,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3C,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,QAAQ,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC7B,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YAClB,aAAa,CAAC,QAAQ,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;IACF,CAAC;IAED,gBAAQ,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC,CAAC;AA/EW,QAAA,OAAO,WA+ElB;AAEK,MAAM,iBAAiB,GAAG,CAChC,MAAkB,EAClB,OAAc,EACd,YAAoB,EACpB,KAA4B,EACrB,EAAE;IACT,IAAA,eAAO,EAAC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE;QACtC,GAAG,KAAK;QACR,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,KAAK;KACjB,CAAC,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,iBAAiB,qBAW5B;AAEK,MAAM,WAAW,GAAG,CAC1B,MAAkB,EAClB,OAAc,EACd,YAAoB,EACpB,KAA4B,EACrB,EAAE;IACT,IAAA,eAAO,EAAC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE;QACtC,GAAG,KAAK;QACR,WAAW,EAAE,KAAK;QAClB,UAAU,EAAE,KAAK;KACjB,CAAC,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,WAAW,eAWtB;AAEF,MAAM,SAAS,GAAG,CAAC,SAAiB,EAAE,IAAc,EAAE,EAAE;IACvD,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;IACzB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE;QAClC,GAAG,EAAE,gBAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAChB,gBAAG,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC;YACpB,WAAW,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;SACxB,CAAC,CACF;KACD,CAAC,CAAC;AACJ,CAAC,CAAC;AAMF,MAAM,eAAe,GAAG,CACvB,SAAiB,EACjB,IAAoB,EACH,EAAE;IACnB,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC;QAE7C,OAAO,IAAI,CAAC;IACb,CAAC;IACD,MAAM,YAAY,GAAgB,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC;IACxE,IAAK,IAAiB,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;QACxC,SAAS,CAAC,SAAS,EAAE,YAAwB,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,YAAY,CAAC;AACrB,CAAC,CAAC;AAEK,MAAM,QAAQ,GAAG,KAAK,EAC5B,QAAW,EAKX,SAA2E,EAC3E,IAAoB,EACnB,EAAE;IACH,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO;IACR,CAAC;IACD,MAAM,KAAK,GAAG,SAAS;SACrB,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,EAA8C,EAAE,CAAC;QACzE,SAAS;QACT,MAAM,CAAC,QAAQ,CAAC;KAChB,CAAC;SACD,MAAM,CACN,CAAC,CAAC,EAAuC,EAAE,CAC1C,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAChC,CAAC;IACH,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO;IACR,CAAC;IACD,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAInE,KAAK,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,KAAK,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,KAAK,EAAE,CAAC;QAC7C,MAAM,SAAS,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;QAC9B,IAAI,iBAAmC,CAAC;QACxC,IAAK,IAAiB,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;YACxC,SAAS,CAAC,SAAS,EAAE,SAAqB,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CACf,UAAkC,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACtD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrB,iBAAiB,KAAK,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBAC5D,MAAM,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACP,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC3B,CAAC;QACF,CAAC,CAAC,CACF,CAAC;IACH,CAAC;AACF,CAAC,CAAC;AAjDW,QAAA,QAAQ,YAiDnB"}
|
@@ -1,8 +1,8 @@
|
|
1
|
+
import type AuthModel from './user';
|
1
2
|
import './express-extension';
|
2
3
|
import type * as Express from 'express';
|
3
4
|
import type { Tx } from '../database-layer/db';
|
4
5
|
import type { ApiKey, User } from '../sbvr-api/sbvr-utils';
|
5
|
-
import * as sbvrUtils from '../sbvr-api/sbvr-utils';
|
6
6
|
import { type HookReq } from './hooks';
|
7
7
|
import { PermissionError, PermissionParsingError } from './errors';
|
8
8
|
import { type ODataRequest } from './uri-parser';
|
@@ -46,7 +46,31 @@ export declare const checkPermissionsMiddleware: (action: PermissionCheck) => Ex
|
|
46
46
|
export declare const addPermissions: (req: PermissionReq, request: ODataRequest & {
|
47
47
|
permissionType?: PermissionCheck;
|
48
48
|
}) => Promise<void>;
|
49
|
+
declare module './sbvr-utils' {
|
50
|
+
interface API {
|
51
|
+
[authModelConfig.apiRoot]: PinejsClient<AuthModel>;
|
52
|
+
}
|
53
|
+
}
|
54
|
+
declare const authModelConfig: {
|
55
|
+
readonly apiRoot: "Auth";
|
56
|
+
readonly modelText: string;
|
57
|
+
readonly customServerCode: any;
|
58
|
+
readonly migrations: {
|
59
|
+
readonly '11.0.0-modified-at': "\n\t\t\tALTER TABLE \"actor\"\n\t\t\tADD COLUMN IF NOT EXISTS \"modified at\" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;\n\n\t\t\tALTER TABLE \"api key\"\n\t\t\tADD COLUMN IF NOT EXISTS \"modified at\" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;\n\t\t\tALTER TABLE \"api key-has-permission\"\n\t\t\tADD COLUMN IF NOT EXISTS \"modified at\" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;\n\t\t\tALTER TABLE \"api key-has-role\"\n\t\t\tADD COLUMN IF NOT EXISTS \"modified at\" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;\n\n\t\t\tALTER TABLE \"permission\"\n\t\t\tADD COLUMN IF NOT EXISTS \"modified at\" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;\n\n\t\t\tALTER TABLE \"role\"\n\t\t\tADD COLUMN IF NOT EXISTS \"modified at\" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;\n\n\t\t\tALTER TABLE \"user\"\n\t\t\tADD COLUMN IF NOT EXISTS \"modified at\" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;\n\t\t\tALTER TABLE \"user-has-role\"\n\t\t\tADD COLUMN IF NOT EXISTS \"modified at\" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;\n\t\t\tALTER TABLE \"user-has-permission\"\n\t\t\tADD COLUMN IF NOT EXISTS \"modified at\" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;\n\t\t";
|
60
|
+
readonly '11.0.1-modified-at': "\n\t\t\tALTER TABLE \"role-has-permission\"\n\t\t\tADD COLUMN IF NOT EXISTS \"modified at\" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;\n\t\t";
|
61
|
+
readonly '14.42.0-api-key-expiry-date': "\n\t\t\tALTER TABLE \"api key\"\n\t\t\tADD COLUMN IF NOT EXISTS \"expiry date\" TIMESTAMP NULL;\n\t\t";
|
62
|
+
};
|
63
|
+
};
|
49
64
|
export declare const config: {
|
50
|
-
models:
|
65
|
+
models: {
|
66
|
+
readonly apiRoot: "Auth";
|
67
|
+
readonly modelText: string;
|
68
|
+
readonly customServerCode: any;
|
69
|
+
readonly migrations: {
|
70
|
+
readonly '11.0.0-modified-at': "\n\t\t\tALTER TABLE \"actor\"\n\t\t\tADD COLUMN IF NOT EXISTS \"modified at\" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;\n\n\t\t\tALTER TABLE \"api key\"\n\t\t\tADD COLUMN IF NOT EXISTS \"modified at\" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;\n\t\t\tALTER TABLE \"api key-has-permission\"\n\t\t\tADD COLUMN IF NOT EXISTS \"modified at\" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;\n\t\t\tALTER TABLE \"api key-has-role\"\n\t\t\tADD COLUMN IF NOT EXISTS \"modified at\" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;\n\n\t\t\tALTER TABLE \"permission\"\n\t\t\tADD COLUMN IF NOT EXISTS \"modified at\" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;\n\n\t\t\tALTER TABLE \"role\"\n\t\t\tADD COLUMN IF NOT EXISTS \"modified at\" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;\n\n\t\t\tALTER TABLE \"user\"\n\t\t\tADD COLUMN IF NOT EXISTS \"modified at\" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;\n\t\t\tALTER TABLE \"user-has-role\"\n\t\t\tADD COLUMN IF NOT EXISTS \"modified at\" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;\n\t\t\tALTER TABLE \"user-has-permission\"\n\t\t\tADD COLUMN IF NOT EXISTS \"modified at\" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;\n\t\t";
|
71
|
+
readonly '11.0.1-modified-at': "\n\t\t\tALTER TABLE \"role-has-permission\"\n\t\t\tADD COLUMN IF NOT EXISTS \"modified at\" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;\n\t\t";
|
72
|
+
readonly '14.42.0-api-key-expiry-date': "\n\t\t\tALTER TABLE \"api key\"\n\t\t\tADD COLUMN IF NOT EXISTS \"expiry date\" TIMESTAMP NULL;\n\t\t";
|
73
|
+
};
|
74
|
+
}[];
|
51
75
|
};
|
52
76
|
export declare const setup: () => void;
|
@@ -1032,7 +1032,7 @@ const checkPermissionsMiddleware = (action) => async (req, res, next) => {
|
|
1032
1032
|
exports.checkPermissionsMiddleware = checkPermissionsMiddleware;
|
1033
1033
|
let guestPermissionsInitialized = false;
|
1034
1034
|
const getGuestPermissions = (0, memoizee_1.default)(async () => {
|
1035
|
-
const result =
|
1035
|
+
const result = await sbvrUtils.api.Auth.get({
|
1036
1036
|
resource: 'user',
|
1037
1037
|
passthrough: {
|
1038
1038
|
req: exports.rootRead,
|
@@ -1043,7 +1043,7 @@ const getGuestPermissions = (0, memoizee_1.default)(async () => {
|
|
1043
1043
|
options: {
|
1044
1044
|
$select: 'id',
|
1045
1045
|
},
|
1046
|
-
})
|
1046
|
+
});
|
1047
1047
|
if (result == null) {
|
1048
1048
|
throw new Error('No guest user');
|
1049
1049
|
}
|
@@ -1105,48 +1105,47 @@ const addPermissions = async (req, request) => {
|
|
1105
1105
|
}
|
1106
1106
|
};
|
1107
1107
|
exports.addPermissions = addPermissions;
|
1108
|
-
|
1109
|
-
|
1110
|
-
|
1111
|
-
|
1112
|
-
|
1113
|
-
|
1114
|
-
|
1115
|
-
|
1116
|
-
ALTER TABLE "actor"
|
1117
|
-
ADD COLUMN IF NOT EXISTS "modified at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;
|
1108
|
+
const authModelConfig = {
|
1109
|
+
apiRoot: 'Auth',
|
1110
|
+
modelText: userModel,
|
1111
|
+
customServerCode: exports,
|
1112
|
+
migrations: {
|
1113
|
+
'11.0.0-modified-at': `
|
1114
|
+
ALTER TABLE "actor"
|
1115
|
+
ADD COLUMN IF NOT EXISTS "modified at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;
|
1118
1116
|
|
1119
|
-
|
1120
|
-
|
1121
|
-
|
1122
|
-
|
1123
|
-
|
1124
|
-
|
1117
|
+
ALTER TABLE "api key"
|
1118
|
+
ADD COLUMN IF NOT EXISTS "modified at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;
|
1119
|
+
ALTER TABLE "api key-has-permission"
|
1120
|
+
ADD COLUMN IF NOT EXISTS "modified at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;
|
1121
|
+
ALTER TABLE "api key-has-role"
|
1122
|
+
ADD COLUMN IF NOT EXISTS "modified at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;
|
1125
1123
|
|
1126
|
-
|
1127
|
-
|
1124
|
+
ALTER TABLE "permission"
|
1125
|
+
ADD COLUMN IF NOT EXISTS "modified at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;
|
1128
1126
|
|
1129
|
-
|
1130
|
-
|
1127
|
+
ALTER TABLE "role"
|
1128
|
+
ADD COLUMN IF NOT EXISTS "modified at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;
|
1131
1129
|
|
1132
|
-
|
1133
|
-
|
1134
|
-
|
1135
|
-
|
1136
|
-
|
1137
|
-
|
1138
|
-
|
1139
|
-
|
1140
|
-
|
1141
|
-
|
1142
|
-
|
1143
|
-
|
1144
|
-
|
1145
|
-
|
1146
|
-
|
1147
|
-
|
1148
|
-
|
1149
|
-
|
1130
|
+
ALTER TABLE "user"
|
1131
|
+
ADD COLUMN IF NOT EXISTS "modified at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;
|
1132
|
+
ALTER TABLE "user-has-role"
|
1133
|
+
ADD COLUMN IF NOT EXISTS "modified at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;
|
1134
|
+
ALTER TABLE "user-has-permission"
|
1135
|
+
ADD COLUMN IF NOT EXISTS "modified at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;
|
1136
|
+
`,
|
1137
|
+
'11.0.1-modified-at': `
|
1138
|
+
ALTER TABLE "role-has-permission"
|
1139
|
+
ADD COLUMN IF NOT EXISTS "modified at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;
|
1140
|
+
`,
|
1141
|
+
'14.42.0-api-key-expiry-date': `
|
1142
|
+
ALTER TABLE "api key"
|
1143
|
+
ADD COLUMN IF NOT EXISTS "expiry date" TIMESTAMP NULL;
|
1144
|
+
`,
|
1145
|
+
},
|
1146
|
+
};
|
1147
|
+
exports.config = {
|
1148
|
+
models: [authModelConfig],
|
1150
1149
|
};
|
1151
1150
|
const setup = () => {
|
1152
1151
|
(0, hooks_1.addHook)('all', 'all', 'all', {
|