on-zero 0.1.16 → 0.1.20
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/dist/cjs/createPermissions.cjs +4 -2
- package/dist/cjs/createPermissions.js +5 -2
- package/dist/cjs/createPermissions.js.map +1 -1
- package/dist/cjs/createPermissions.native.js +6 -2
- package/dist/cjs/createPermissions.native.js.map +1 -1
- package/dist/cjs/createZeroServer.cjs +15 -5
- package/dist/cjs/createZeroServer.js +11 -5
- package/dist/cjs/createZeroServer.js.map +1 -1
- package/dist/cjs/createZeroServer.native.js +15 -4
- package/dist/cjs/createZeroServer.native.js.map +1 -1
- package/dist/cjs/helpers/createMutators.cjs +16 -5
- package/dist/cjs/helpers/createMutators.js +20 -5
- package/dist/cjs/helpers/createMutators.js.map +1 -1
- package/dist/cjs/helpers/createMutators.native.js +19 -5
- package/dist/cjs/helpers/createMutators.native.js.map +1 -1
- package/dist/esm/createPermissions.js +5 -2
- package/dist/esm/createPermissions.js.map +1 -1
- package/dist/esm/createPermissions.mjs +4 -2
- package/dist/esm/createPermissions.mjs.map +1 -1
- package/dist/esm/createPermissions.native.js +6 -2
- package/dist/esm/createPermissions.native.js.map +1 -1
- package/dist/esm/createZeroServer.js +11 -5
- package/dist/esm/createZeroServer.js.map +1 -1
- package/dist/esm/createZeroServer.mjs +15 -5
- package/dist/esm/createZeroServer.mjs.map +1 -1
- package/dist/esm/createZeroServer.native.js +15 -4
- package/dist/esm/createZeroServer.native.js.map +1 -1
- package/dist/esm/helpers/createMutators.js +20 -5
- package/dist/esm/helpers/createMutators.js.map +1 -1
- package/dist/esm/helpers/createMutators.mjs +16 -5
- package/dist/esm/helpers/createMutators.mjs.map +1 -1
- package/dist/esm/helpers/createMutators.native.js +19 -5
- package/dist/esm/helpers/createMutators.native.js.map +1 -1
- package/package.json +2 -2
- package/readme.md +42 -6
- package/src/createPermissions.ts +12 -3
- package/src/createZeroServer.ts +45 -0
- package/src/helpers/createMutators.ts +50 -11
- package/src/types.ts +9 -0
- package/types/createPermissions.d.ts +3 -2
- package/types/createPermissions.d.ts.map +1 -1
- package/types/createZeroServer.d.ts +32 -2
- package/types/createZeroServer.d.ts.map +1 -1
- package/types/helpers/createMutators.d.ts +9 -1
- package/types/helpers/createMutators.d.ts.map +1 -1
- package/types/types.d.ts +8 -0
- package/types/types.d.ts.map +1 -1
|
@@ -31,9 +31,11 @@ var import_helpers = require("@take-out/helpers"),
|
|
|
31
31
|
import_where = require("./where.cjs");
|
|
32
32
|
function createPermissions({
|
|
33
33
|
environment,
|
|
34
|
-
schema
|
|
34
|
+
schema,
|
|
35
|
+
adminRoleMode = "all"
|
|
35
36
|
}) {
|
|
36
37
|
function buildPermissionQuery(authData, eb, permissionWhere, objOrId, tableNameOverride) {
|
|
38
|
+
if ((adminRoleMode === "all" || adminRoleMode === "queries") && authData?.role === "admin") return eb.cmpLit(!0, "=", !0);
|
|
37
39
|
const tableName = tableNameOverride || (0, import_where.getWhereTableName)(permissionWhere);
|
|
38
40
|
if (!tableName) throw new Error("Must use PermissionWhere for buildPermissionQuery");
|
|
39
41
|
const tableSchema = schema.tables[tableName];
|
|
@@ -59,7 +61,7 @@ function createPermissions({
|
|
|
59
61
|
}
|
|
60
62
|
};
|
|
61
63
|
async function ensurePermission(tx, authData, tableName, where, obj) {
|
|
62
|
-
if (authData?.role === "admin") return;
|
|
64
|
+
if ((adminRoleMode === "all" || adminRoleMode === "mutations") && authData?.role === "admin") return;
|
|
63
65
|
const queryBase = (0, import_state.getZQL)()[tableName];
|
|
64
66
|
let query = null;
|
|
65
67
|
try {
|
|
@@ -20,9 +20,12 @@ module.exports = __toCommonJS(createPermissions_exports);
|
|
|
20
20
|
var import_helpers = require("@take-out/helpers"), import_didRunPermissionCheck = require("./helpers/didRunPermissionCheck"), import_mutatorContext = require("./helpers/mutatorContext"), import_prettyFormatZeroQuery = require("./helpers/prettyFormatZeroQuery"), import_state = require("./state"), import_where = require("./where");
|
|
21
21
|
function createPermissions({
|
|
22
22
|
environment,
|
|
23
|
-
schema
|
|
23
|
+
schema,
|
|
24
|
+
adminRoleMode = "all"
|
|
24
25
|
}) {
|
|
25
26
|
function buildPermissionQuery(authData, eb, permissionWhere, objOrId, tableNameOverride) {
|
|
27
|
+
if ((adminRoleMode === "all" || adminRoleMode === "queries") && authData?.role === "admin")
|
|
28
|
+
return eb.cmpLit(!0, "=", !0);
|
|
26
29
|
const tableName = tableNameOverride || (0, import_where.getWhereTableName)(permissionWhere);
|
|
27
30
|
if (!tableName)
|
|
28
31
|
throw new Error("Must use PermissionWhere for buildPermissionQuery");
|
|
@@ -52,7 +55,7 @@ function createPermissions({
|
|
|
52
55
|
}
|
|
53
56
|
};
|
|
54
57
|
async function ensurePermission(tx, authData, tableName, where, obj) {
|
|
55
|
-
if (authData?.role === "admin")
|
|
58
|
+
if ((adminRoleMode === "all" || adminRoleMode === "mutations") && authData?.role === "admin")
|
|
56
59
|
return;
|
|
57
60
|
const queryBase = (0, import_state.getZQL)()[tableName];
|
|
58
61
|
let query = null;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/createPermissions.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAoC,8BAEpC,+BAAyC,4CACzC,wBAA+B,qCAC/B,+BAAsC,4CACtC,eAAuB,oBACvB,eAAkC;AAU3B,SAAS,kBAA6C;AAAA,EAC3D;AAAA,EACA;
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAoC,8BAEpC,+BAAyC,4CACzC,wBAA+B,qCAC/B,+BAAsC,4CACtC,eAAuB,oBACvB,eAAkC;AAU3B,SAAS,kBAA6C;AAAA,EAC3D;AAAA,EACA;AAAA,EACA,gBAAgB;AAClB,GAIG;AAQD,WAAS,qBACP,UACA,IACA,iBAEA,SACA,mBACA;AAGA,SAD2B,kBAAkB,SAAS,kBAAkB,cAC9C,UAAU,SAAS;AAC3C,aAAO,GAAG,OAAO,IAAM,KAAK,EAAI;AAGlC,UAAM,YAAY,yBAAqB,gCAAkB,eAAe;AAExE,QAAI,CAAC;AACH,YAAM,IAAI,MAAM,mDAAmD;AAGrE,UAAM,cAAc,OAAO,OAAO,SAAS;AAE3C,QAAI,CAAC;AACH,YAAM,IAAI,MAAM,YAAY;AAG9B,UAAM,cAAc,YAAY,YAC1B,mBAAmB,gBAAgB,IAAI,QAAQ;AAErD,QAAI,oBAAoB;AACtB,YAAM,IAAI,MAAM,6BAA6B,SAAS,EAAE;AAG1D,QAAI,qBAAqB;AACvB,aAAO,GAAG,OAAO,IAAM,KAAK,EAAI;AAGlC,QAAI,qBAAqB;AACvB,aAAO,GAAG,OAAO,IAAM,KAAK,EAAK;AAGnC,UAAM,mBAAgC,CAAC;AAEvC,eAAW,OAAO,aAAa;AAC7B,YAAM,QAAQ,OAAO,WAAY,WAAW,UAAU,QAAQ,GAAG;AACjE,uBAAiB,KAAK,GAAG,IAAI,KAAY,KAAK,CAAC;AAAA,IACjD;AAEA,WAAO,GAAG,IAAI,kBAAkB,GAAG,gBAAgB;AAAA,EACrD;AAEA,QAAM,MAAW,OAAO,OAAO,QAAQ;AAErC,QAAI,gBAAgB,UAAU;AAC5B,YAAM,UAAM,sCAAe,GACrB,gBAAY,gCAAkB,KAAK;AACzC,UAAI,CAAC;AACH,cAAM,IAAI,MAAM,sDAAsD;AAExE,YAAM,iBAAiB,IAAI,IAAI,IAAI,UAAU,WAAW,OAAO,GAAG,OAClE,uDAAyB,GAAG;AAAA,IAC9B;AAAA,EACF;AAEA,iBAAe,iBACb,IACA,UACA,WACA,OACA,KACe;AAGf,SAD6B,kBAAkB,SAAS,kBAAkB,gBAC9C,UAAU,SAAS;AAC7C;AAIF,UAAM,gBADa,qBAAO,EACG,SAAS;AACtC,QAAI,QAAqC;AAEzC,QAAI;AACF,cAAQ,UACL,MAAM,CAAC,OACC,qBAAqB,UAAU,IAAI,OAAO,GAAG,CACrD,EACA,IAAI,OAEP,uBAAO,MAAM,GAAG,IAAI,KAAK,CAAC;AAAA,IAC5B,SAAS,KAAK;AACZ,YAAM,aAAa,GAAG,SAAS,kBAAkB,UAAU,EAAE;AAE7D,UAAI,eAAe,4BAAa;AAC9B,YAAI,MAAM,uCAAgC,UAAU;AACpD,cAAI,QAAQ,IAAI,aAAa,iBAAiB,UAC5C,OAAO;AAAA,OAAM,oDAAsB,KAAK,CAAC,KAErC,IAAI,MAAM,GAAG;AAAA,MACrB;AAEA,YAAM,IAAI,MAAM,4BAA4B,UAAU;AAAA,EAAK,GAAG,EAAE;AAAA,IAClE;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -37,9 +37,12 @@ function _instanceof(left, right) {
|
|
|
37
37
|
function createPermissions(param) {
|
|
38
38
|
var {
|
|
39
39
|
environment,
|
|
40
|
-
schema
|
|
40
|
+
schema,
|
|
41
|
+
adminRoleMode = "all"
|
|
41
42
|
} = param;
|
|
42
43
|
function buildPermissionQuery(authData, eb, permissionWhere, objOrId, tableNameOverride) {
|
|
44
|
+
var adminBypassQueries = adminRoleMode === "all" || adminRoleMode === "queries";
|
|
45
|
+
if (adminBypassQueries && authData?.role === "admin") return eb.cmpLit(!0, "=", !0);
|
|
43
46
|
var tableName = tableNameOverride || (0, import_where.getWhereTableName)(permissionWhere);
|
|
44
47
|
if (!tableName) throw new Error("Must use PermissionWhere for buildPermissionQuery");
|
|
45
48
|
var tableSchema = schema.tables[tableName];
|
|
@@ -79,7 +82,8 @@ function createPermissions(param) {
|
|
|
79
82
|
}
|
|
80
83
|
};
|
|
81
84
|
async function ensurePermission(tx, authData, tableName, where, obj) {
|
|
82
|
-
|
|
85
|
+
var adminBypassMutations = adminRoleMode === "all" || adminRoleMode === "mutations";
|
|
86
|
+
if (!(adminBypassMutations && authData?.role === "admin")) {
|
|
83
87
|
var zqlBuilder = (0, import_state.getZQL)(),
|
|
84
88
|
queryBase = zqlBuilder[tableName],
|
|
85
89
|
query = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","createPermissions_exports","__export","createPermissions","module","exports","import_helpers","require","import_didRunPermissionCheck","import_mutatorContext","import_prettyFormatZeroQuery","import_state","import_where","_instanceof","left","right","Symbol","hasInstance","param","environment","schema","buildPermissionQuery","authData","eb","permissionWhere","objOrId","tableNameOverride","tableName","getWhereTableName","Error","tableSchema","tables","primaryKeys","primaryKey","permissionReturn","
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","createPermissions_exports","__export","createPermissions","module","exports","import_helpers","require","import_didRunPermissionCheck","import_mutatorContext","import_prettyFormatZeroQuery","import_state","import_where","_instanceof","left","right","Symbol","hasInstance","param","environment","schema","adminRoleMode","buildPermissionQuery","authData","eb","permissionWhere","objOrId","tableNameOverride","adminBypassQueries","role","cmpLit","tableName","getWhereTableName","Error","tableSchema","tables","primaryKeys","primaryKey","permissionReturn","primaryKeyWheres","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","iterator","_step","next","done","key","push","cmp","err","return","and","can","where","obj","ctx","mutatorContext","ensurePermission","tx","setDidRunPermissionCheck","adminBypassMutations","zqlBuilder","getZQL","queryBase","query","one","ensure","run","errorTitle","id"],"sources":["../../src/createPermissions.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -41,7 +41,10 @@ function createZeroServer({
|
|
|
41
41
|
database,
|
|
42
42
|
schema,
|
|
43
43
|
models,
|
|
44
|
-
queries
|
|
44
|
+
queries,
|
|
45
|
+
validateQuery,
|
|
46
|
+
validateMutation,
|
|
47
|
+
defaultAllowAdminRole = "all"
|
|
45
48
|
}) {
|
|
46
49
|
(0, import_state.setSchema)(schema);
|
|
47
50
|
const dbString = (0, import_helpers.assertString)(database, 'createZeroServer "database"'),
|
|
@@ -54,7 +57,8 @@ function createZeroServer({
|
|
|
54
57
|
})),
|
|
55
58
|
permissions = (0, import_createPermissions.createPermissions)({
|
|
56
59
|
environment: "server",
|
|
57
|
-
schema
|
|
60
|
+
schema,
|
|
61
|
+
adminRoleMode: defaultAllowAdminRole
|
|
58
62
|
}),
|
|
59
63
|
processor = new import_pg.PushProcessor(zeroDb),
|
|
60
64
|
handleMutationRequest = async ({
|
|
@@ -69,7 +73,8 @@ function createZeroServer({
|
|
|
69
73
|
createServerActions,
|
|
70
74
|
environment: "server",
|
|
71
75
|
models,
|
|
72
|
-
authData
|
|
76
|
+
authData,
|
|
77
|
+
validateMutation
|
|
73
78
|
}),
|
|
74
79
|
response = await processor.process(mutators, request);
|
|
75
80
|
if (!skipAsyncTasks && asyncTasks.length) {
|
|
@@ -101,7 +106,11 @@ function createZeroServer({
|
|
|
101
106
|
if (!perm) throw new Error(`[permission] no permission defined for table: ${table}`);
|
|
102
107
|
return (0, import_state.getZQL)()[table].where(eb => permissions.buildPermissionQuery(authData, eb, perm, objOrId, table)).one();
|
|
103
108
|
}
|
|
104
|
-
return
|
|
109
|
+
return validateQuery && validateQuery({
|
|
110
|
+
authData,
|
|
111
|
+
queryName: name,
|
|
112
|
+
params: args
|
|
113
|
+
}), (0, import_zero.mustGetQuery)(queries, name).fn({
|
|
105
114
|
args,
|
|
106
115
|
ctx: authData
|
|
107
116
|
});
|
|
@@ -121,7 +130,8 @@ function createZeroServer({
|
|
|
121
130
|
...authData
|
|
122
131
|
},
|
|
123
132
|
createServerActions,
|
|
124
|
-
can: permissions.can
|
|
133
|
+
can: permissions.can,
|
|
134
|
+
validateMutation
|
|
125
135
|
});
|
|
126
136
|
await transaction(async tx => {
|
|
127
137
|
await run(tx, mutators);
|
|
@@ -23,7 +23,10 @@ function createZeroServer({
|
|
|
23
23
|
database,
|
|
24
24
|
schema,
|
|
25
25
|
models,
|
|
26
|
-
queries
|
|
26
|
+
queries,
|
|
27
|
+
validateQuery,
|
|
28
|
+
validateMutation,
|
|
29
|
+
defaultAllowAdminRole = "all"
|
|
27
30
|
}) {
|
|
28
31
|
(0, import_state.setSchema)(schema);
|
|
29
32
|
const dbString = (0, import_helpers.assertString)(database, 'createZeroServer "database"'), zeroDb = (0, import_pg2.zeroNodePg)(
|
|
@@ -35,7 +38,8 @@ function createZeroServer({
|
|
|
35
38
|
})
|
|
36
39
|
), permissions = (0, import_createPermissions.createPermissions)({
|
|
37
40
|
environment: "server",
|
|
38
|
-
schema
|
|
41
|
+
schema,
|
|
42
|
+
adminRoleMode: defaultAllowAdminRole
|
|
39
43
|
}), processor = new import_pg.PushProcessor(zeroDb), handleMutationRequest = async ({
|
|
40
44
|
authData,
|
|
41
45
|
request,
|
|
@@ -47,7 +51,8 @@ function createZeroServer({
|
|
|
47
51
|
createServerActions,
|
|
48
52
|
environment: "server",
|
|
49
53
|
models,
|
|
50
|
-
authData
|
|
54
|
+
authData,
|
|
55
|
+
validateMutation
|
|
51
56
|
}), response = await processor.process(mutators, request);
|
|
52
57
|
if (!skipAsyncTasks && asyncTasks.length) {
|
|
53
58
|
const id = (0, import_helpers.randomId)();
|
|
@@ -78,7 +83,7 @@ function createZeroServer({
|
|
|
78
83
|
throw new Error(`[permission] no permission defined for table: ${table}`);
|
|
79
84
|
return (0, import_state.getZQL)()[table].where((eb) => permissions.buildPermissionQuery(authData, eb, perm, objOrId, table)).one();
|
|
80
85
|
}
|
|
81
|
-
return (0, import_zero.mustGetQuery)(queries, name).fn({ args, ctx: authData });
|
|
86
|
+
return validateQuery && validateQuery({ authData, queryName: name, params: args }), (0, import_zero.mustGetQuery)(queries, name).fn({ args, ctx: authData });
|
|
82
87
|
},
|
|
83
88
|
schema,
|
|
84
89
|
request
|
|
@@ -96,7 +101,8 @@ function createZeroServer({
|
|
|
96
101
|
...authData
|
|
97
102
|
},
|
|
98
103
|
createServerActions,
|
|
99
|
-
can: permissions.can
|
|
104
|
+
can: permissions.can,
|
|
105
|
+
validateMutation
|
|
100
106
|
});
|
|
101
107
|
await transaction(async (tx) => {
|
|
102
108
|
await run(tx, mutators);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/createZeroServer.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA6B,2BAC7B,YAA8B,8BAC9B,gBAA6D,kCAC7DA,aAA2B,8CAC3B,iBAAuC,8BACvCA,aAAqB,eAErB,2BAAkC,gCAClC,wBAA+B,qCAC/B,wBAAiD,qCACjD,uBAAwC,4BACxC,aAAiC,kBACjC,eAA+C,oBAC/C,oBAA0B;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["import_pg", "zeroHandleQueryRequest", "query"]
|
|
6
6
|
}
|
|
@@ -44,7 +44,10 @@ function createZeroServer(param) {
|
|
|
44
44
|
database,
|
|
45
45
|
schema,
|
|
46
46
|
models,
|
|
47
|
-
queries
|
|
47
|
+
queries,
|
|
48
|
+
validateQuery,
|
|
49
|
+
validateMutation,
|
|
50
|
+
defaultAllowAdminRole = "all"
|
|
48
51
|
} = param;
|
|
49
52
|
(0, import_state.setSchema)(schema);
|
|
50
53
|
var dbString = (0, import_helpers.assertString)(database, 'createZeroServer "database"'),
|
|
@@ -57,7 +60,8 @@ function createZeroServer(param) {
|
|
|
57
60
|
})),
|
|
58
61
|
permissions = (0, import_createPermissions.createPermissions)({
|
|
59
62
|
environment: "server",
|
|
60
|
-
schema
|
|
63
|
+
schema,
|
|
64
|
+
adminRoleMode: defaultAllowAdminRole
|
|
61
65
|
}),
|
|
62
66
|
processor = new import_pg.PushProcessor(zeroDb),
|
|
63
67
|
handleMutationRequest = async function (param2) {
|
|
@@ -73,7 +77,8 @@ function createZeroServer(param) {
|
|
|
73
77
|
createServerActions,
|
|
74
78
|
environment: "server",
|
|
75
79
|
models,
|
|
76
|
-
authData
|
|
80
|
+
authData,
|
|
81
|
+
validateMutation
|
|
77
82
|
}),
|
|
78
83
|
response = await processor.process(mutators, request);
|
|
79
84
|
if (!skipAsyncTasks && asyncTasks.length) {
|
|
@@ -110,6 +115,11 @@ function createZeroServer(param) {
|
|
|
110
115
|
return permissions.buildPermissionQuery(authData, eb, perm, objOrId, table);
|
|
111
116
|
}).one();
|
|
112
117
|
}
|
|
118
|
+
validateQuery && validateQuery({
|
|
119
|
+
authData,
|
|
120
|
+
queryName: name,
|
|
121
|
+
params: args
|
|
122
|
+
});
|
|
113
123
|
var _$query = (0, import_zero.mustGetQuery)(queries, name);
|
|
114
124
|
return _$query.fn({
|
|
115
125
|
args,
|
|
@@ -133,7 +143,8 @@ function createZeroServer(param) {
|
|
|
133
143
|
...authData
|
|
134
144
|
},
|
|
135
145
|
createServerActions,
|
|
136
|
-
can: permissions.can
|
|
146
|
+
can: permissions.can,
|
|
147
|
+
validateMutation
|
|
137
148
|
});
|
|
138
149
|
await transaction(async function (tx) {
|
|
139
150
|
await run(tx, mutators);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","createZeroServer_exports","__export","createZeroServer","module","exports","import_zero","require","import_pg","import_server","import_pg2","import_helpers","import_pg3","import_createPermissions","import_createMutators","import_mutatorContext","import_modelRegistry","import_run","import_state","import_zeroRunner","param","createServerActions","database","schema","models","queries","setSchema","dbString","assertString","zeroDb","zeroNodePg","Pool","connectionString","ssl","includes","rejectUnauthorized","permissions","createPermissions","environment","processor","PushProcessor","handleMutationRequest","param2","authData","request","skipAsyncTasks","asyncTasks","mutators","createMutators","can","response","process","length","id","randomId","console","info","Promise","all","map","task","then","catch","err","error","handleQueryRequest","Error","setAuthData","name","args","startsWith","table","slice","objOrId","perm","getMutationsPermissions","getZQL","where","eb","buildPermissionQuery","one","_$query","mustGetQuery","fn","ctx","mutate","run","email","role","transaction","tx","t","query2","isInZeroMutation","mutatorContext","output","dummyTransactionInput","query","cb","setCustomQueries","setRunner","queryObj","clientGroupID","clientID","mutationID","upstreamSchema"],"sources":["../../src/createZeroServer.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,wBAAA;AAAAC,QAAA,CAAAD,wBAAA;EAAAE,gBAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAT,YAA6B,CAAAK,wBAC7B;
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","createZeroServer_exports","__export","createZeroServer","module","exports","import_zero","require","import_pg","import_server","import_pg2","import_helpers","import_pg3","import_createPermissions","import_createMutators","import_mutatorContext","import_modelRegistry","import_run","import_state","import_zeroRunner","param","createServerActions","database","schema","models","queries","validateQuery","validateMutation","defaultAllowAdminRole","setSchema","dbString","assertString","zeroDb","zeroNodePg","Pool","connectionString","ssl","includes","rejectUnauthorized","permissions","createPermissions","environment","adminRoleMode","processor","PushProcessor","handleMutationRequest","param2","authData","request","skipAsyncTasks","asyncTasks","mutators","createMutators","can","response","process","length","id","randomId","console","info","Promise","all","map","task","then","catch","err","error","handleQueryRequest","Error","setAuthData","name","args","startsWith","table","slice","objOrId","perm","getMutationsPermissions","getZQL","where","eb","buildPermissionQuery","one","queryName","params","_$query","mustGetQuery","fn","ctx","mutate","run","email","role","transaction","tx","t","query2","isInZeroMutation","mutatorContext","output","dummyTransactionInput","query","cb","setCustomQueries","setRunner","queryObj","clientGroupID","clientID","mutationID","upstreamSchema"],"sources":["../../src/createZeroServer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -33,7 +33,8 @@ function createMutators({
|
|
|
33
33
|
createServerActions,
|
|
34
34
|
asyncTasks = [],
|
|
35
35
|
can,
|
|
36
|
-
models
|
|
36
|
+
models,
|
|
37
|
+
validateMutation
|
|
37
38
|
}) {
|
|
38
39
|
const serverActions = createServerActions?.(),
|
|
39
40
|
modelMutators = (0, import_helpers.mapObject)(models, val => val.mutate);
|
|
@@ -55,13 +56,15 @@ function createMutators({
|
|
|
55
56
|
};
|
|
56
57
|
}
|
|
57
58
|
function withDevelopmentLogging(name, fn) {
|
|
58
|
-
|
|
59
|
+
if (process.env.NODE_ENV !== "development" && !process.env.IS_TESTING) return fn;
|
|
60
|
+
const debug = process.env.DEBUG;
|
|
61
|
+
return async (...args) => {
|
|
59
62
|
const startTime = performance.now();
|
|
60
63
|
try {
|
|
61
|
-
import_constants.isServer && console.info(`[mutator] ${name} start`);
|
|
64
|
+
debug && import_constants.isServer && console.info(`[mutator] ${name} start`);
|
|
62
65
|
const result = await fn(...args),
|
|
63
66
|
duration = (performance.now() - startTime).toFixed(2);
|
|
64
|
-
return import_constants.isBrowser ? (console.groupCollapsed(`[mutator] ${name} completed in ${duration}ms`), console.info("\u2192", args[1]), console.info("\u2190", result), console.trace(), console.groupEnd()) : console.info(`[mutator] ${name} completed in ${duration}ms`), result;
|
|
67
|
+
return debug && (import_constants.isBrowser ? (console.groupCollapsed(`[mutator] ${name} completed in ${duration}ms`), console.info("\u2192", args[1]), console.info("\u2190", result), console.trace(), console.groupEnd()) : console.info(`[mutator] ${name} completed in ${duration}ms`)), result;
|
|
65
68
|
} catch (error) {
|
|
66
69
|
const duration = (performance.now() - startTime).toFixed(2);
|
|
67
70
|
throw console.groupCollapsed(`[mutator] ${name} failed after ${duration}ms`), console.error("error:", error), console.info("arguments:", JSON.stringify(args[1], null, 2)), console.info("stack trace:", new Error().stack), console.groupEnd(), error;
|
|
@@ -78,13 +81,21 @@ function createMutators({
|
|
|
78
81
|
return Promise.race([fn(...args), timeoutPromise]);
|
|
79
82
|
};
|
|
80
83
|
}
|
|
84
|
+
function withValidation(tableName, mutatorName, fn) {
|
|
85
|
+
return validateMutation ? async (...args) => (await validateMutation({
|
|
86
|
+
authData: import_constants.isBrowser ? (0, import_state.getAuthData)() : authData,
|
|
87
|
+
tableName,
|
|
88
|
+
mutatorName,
|
|
89
|
+
args: args[1]
|
|
90
|
+
}), fn(...args)) : fn;
|
|
91
|
+
}
|
|
81
92
|
function decorateMutators(modules) {
|
|
82
93
|
const result = {};
|
|
83
94
|
for (const [moduleName, moduleExports] of Object.entries(modules)) {
|
|
84
95
|
result[moduleName] = {};
|
|
85
96
|
for (const [name, exportValue] of Object.entries(moduleExports)) if (typeof exportValue == "function") {
|
|
86
97
|
const fullName = `${moduleName}.${name}`;
|
|
87
|
-
result[moduleName][name] = withDevelopmentLogging(fullName, withTimeoutGuard(fullName, withContext(exportValue)));
|
|
98
|
+
result[moduleName][name] = withDevelopmentLogging(fullName, withTimeoutGuard(fullName, withValidation(moduleName, name, withContext(exportValue))));
|
|
88
99
|
}
|
|
89
100
|
}
|
|
90
101
|
return result;
|
|
@@ -24,7 +24,8 @@ function createMutators({
|
|
|
24
24
|
createServerActions,
|
|
25
25
|
asyncTasks = [],
|
|
26
26
|
can,
|
|
27
|
-
models
|
|
27
|
+
models,
|
|
28
|
+
validateMutation
|
|
28
29
|
}) {
|
|
29
30
|
const serverActions = createServerActions?.(), modelMutators = (0, import_helpers.mapObject)(models, (val) => val.mutate);
|
|
30
31
|
function withContext(fn) {
|
|
@@ -45,12 +46,15 @@ function createMutators({
|
|
|
45
46
|
};
|
|
46
47
|
}
|
|
47
48
|
function withDevelopmentLogging(name, fn) {
|
|
48
|
-
|
|
49
|
+
if (process.env.NODE_ENV !== "development" && !process.env.IS_TESTING)
|
|
50
|
+
return fn;
|
|
51
|
+
const debug = process.env.DEBUG;
|
|
52
|
+
return async (...args) => {
|
|
49
53
|
const startTime = performance.now();
|
|
50
54
|
try {
|
|
51
|
-
import_constants.isServer && console.info(`[mutator] ${name} start`);
|
|
55
|
+
debug && import_constants.isServer && console.info(`[mutator] ${name} start`);
|
|
52
56
|
const result = await fn(...args), duration = (performance.now() - startTime).toFixed(2);
|
|
53
|
-
return import_constants.isBrowser ? (console.groupCollapsed(`[mutator] ${name} completed in ${duration}ms`), console.info("\u2192", args[1]), console.info("\u2190", result), console.trace(), console.groupEnd()) : console.info(`[mutator] ${name} completed in ${duration}ms`), result;
|
|
57
|
+
return debug && (import_constants.isBrowser ? (console.groupCollapsed(`[mutator] ${name} completed in ${duration}ms`), console.info("\u2192", args[1]), console.info("\u2190", result), console.trace(), console.groupEnd()) : console.info(`[mutator] ${name} completed in ${duration}ms`)), result;
|
|
54
58
|
} catch (error) {
|
|
55
59
|
const duration = (performance.now() - startTime).toFixed(2);
|
|
56
60
|
throw console.groupCollapsed(`[mutator] ${name} failed after ${duration}ms`), console.error("error:", error), console.info("arguments:", JSON.stringify(args[1], null, 2)), console.info("stack trace:", new Error().stack), console.groupEnd(), error;
|
|
@@ -67,6 +71,14 @@ function createMutators({
|
|
|
67
71
|
return Promise.race([fn(...args), timeoutPromise]);
|
|
68
72
|
};
|
|
69
73
|
}
|
|
74
|
+
function withValidation(tableName, mutatorName, fn) {
|
|
75
|
+
return validateMutation ? async (...args) => (await validateMutation({
|
|
76
|
+
authData: import_constants.isBrowser ? (0, import_state.getAuthData)() : authData,
|
|
77
|
+
tableName,
|
|
78
|
+
mutatorName,
|
|
79
|
+
args: args[1]
|
|
80
|
+
}), fn(...args)) : fn;
|
|
81
|
+
}
|
|
70
82
|
function decorateMutators(modules) {
|
|
71
83
|
const result = {};
|
|
72
84
|
for (const [moduleName, moduleExports] of Object.entries(modules)) {
|
|
@@ -76,7 +88,10 @@ function createMutators({
|
|
|
76
88
|
const fullName = `${moduleName}.${name}`;
|
|
77
89
|
result[moduleName][name] = withDevelopmentLogging(
|
|
78
90
|
fullName,
|
|
79
|
-
withTimeoutGuard(
|
|
91
|
+
withTimeoutGuard(
|
|
92
|
+
fullName,
|
|
93
|
+
withValidation(moduleName, name, withContext(exportValue))
|
|
94
|
+
)
|
|
80
95
|
);
|
|
81
96
|
}
|
|
82
97
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/helpers/createMutators.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAgC,8BAEhC,mBAAoC,yBACpC,eAA4B,qBAC5B,wBAA+B;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -36,7 +36,8 @@ function createMutators(param) {
|
|
|
36
36
|
createServerActions,
|
|
37
37
|
asyncTasks = [],
|
|
38
38
|
can,
|
|
39
|
-
models
|
|
39
|
+
models,
|
|
40
|
+
validateMutation
|
|
40
41
|
} = param,
|
|
41
42
|
serverActions = createServerActions?.(),
|
|
42
43
|
modelMutators = (0, import_helpers.mapObject)(models, function (val) {
|
|
@@ -63,14 +64,16 @@ function createMutators(param) {
|
|
|
63
64
|
};
|
|
64
65
|
}
|
|
65
66
|
function withDevelopmentLogging(name, fn) {
|
|
66
|
-
|
|
67
|
+
if (process.env.NODE_ENV !== "development" && !process.env.IS_TESTING) return fn;
|
|
68
|
+
var debug = process.env.DEBUG;
|
|
69
|
+
return async function () {
|
|
67
70
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];
|
|
68
71
|
var startTime = performance.now();
|
|
69
72
|
try {
|
|
70
|
-
import_constants.isServer && console.info(`[mutator] ${name} start`);
|
|
73
|
+
debug && import_constants.isServer && console.info(`[mutator] ${name} start`);
|
|
71
74
|
var result = await fn(...args),
|
|
72
75
|
duration = (performance.now() - startTime).toFixed(2);
|
|
73
|
-
return import_constants.isBrowser ? (console.groupCollapsed(`[mutator] ${name} completed in ${duration}ms`), console.info("\u2192", args[1]), console.info("\u2190", result), console.trace(), console.groupEnd()) : console.info(`[mutator] ${name} completed in ${duration}ms`), result;
|
|
76
|
+
return debug && (import_constants.isBrowser ? (console.groupCollapsed(`[mutator] ${name} completed in ${duration}ms`), console.info("\u2192", args[1]), console.info("\u2190", result), console.trace(), console.groupEnd()) : console.info(`[mutator] ${name} completed in ${duration}ms`)), result;
|
|
74
77
|
} catch (error) {
|
|
75
78
|
var duration1 = (performance.now() - startTime).toFixed(2);
|
|
76
79
|
throw console.groupCollapsed(`[mutator] ${name} failed after ${duration1}ms`), console.error("error:", error), console.info("arguments:", JSON.stringify(args[1], null, 2)), console.info("stack trace:", new Error().stack), console.groupEnd(), error;
|
|
@@ -89,6 +92,17 @@ function createMutators(param) {
|
|
|
89
92
|
return Promise.race([fn(...args), timeoutPromise]);
|
|
90
93
|
};
|
|
91
94
|
}
|
|
95
|
+
function withValidation(tableName, mutatorName, fn) {
|
|
96
|
+
return validateMutation ? async function () {
|
|
97
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];
|
|
98
|
+
return await validateMutation({
|
|
99
|
+
authData: import_constants.isBrowser ? (0, import_state.getAuthData)() : authData,
|
|
100
|
+
tableName,
|
|
101
|
+
mutatorName,
|
|
102
|
+
args: args[1]
|
|
103
|
+
}), fn(...args);
|
|
104
|
+
} : fn;
|
|
105
|
+
}
|
|
92
106
|
function decorateMutators(modules) {
|
|
93
107
|
var result = {},
|
|
94
108
|
_iteratorNormalCompletion = !0,
|
|
@@ -106,7 +120,7 @@ function createMutators(param) {
|
|
|
106
120
|
var [name, exportValue] = _step1.value;
|
|
107
121
|
if (typeof exportValue == "function") {
|
|
108
122
|
var fullName = `${moduleName}.${name}`;
|
|
109
|
-
result[moduleName][name] = withDevelopmentLogging(fullName, withTimeoutGuard(fullName, withContext(exportValue)));
|
|
123
|
+
result[moduleName][name] = withDevelopmentLogging(fullName, withTimeoutGuard(fullName, withValidation(moduleName, name, withContext(exportValue))));
|
|
110
124
|
}
|
|
111
125
|
}
|
|
112
126
|
} catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","createMutators_exports","__export","createMutators","module","exports","import_helpers","require","import_constants","import_state","import_mutatorContext","param","environment","authData","createServerActions","asyncTasks","can","models","serverActions","modelMutators","mapObject","val","mutate","withContext","fn","tx","_len","arguments","length","args","Array","_key","mutationContext","isBrowser","getAuthData","server","actions","runWithContext","withDevelopmentLogging","name","process","env","NODE_ENV","IS_TESTING","startTime","performance","now","isServer","console","info","result","duration","toFixed","groupCollapsed","trace","groupEnd","error","duration1","JSON","stringify","Error","stack","withTimeoutGuard","timeoutMs","time","ms","minutes","timeoutPromise","Promise","_","reject","setTimeout","race","decorateMutators","modules","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Object","entries","Symbol","iterator","_step","next","done","moduleName","moduleExports","_iteratorNormalCompletion1","_didIteratorError1","_iteratorError1","_iterator1","_step1"],"sources":["../../../src/helpers/createMutators.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,sBAAA;AAAAC,QAAA,CAAAD,sBAAA;EAAAE,cAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAT,YAAgC,CAAAK,sBAEhC;
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","createMutators_exports","__export","createMutators","module","exports","import_helpers","require","import_constants","import_state","import_mutatorContext","param","environment","authData","createServerActions","asyncTasks","can","models","validateMutation","serverActions","modelMutators","mapObject","val","mutate","withContext","fn","tx","_len","arguments","length","args","Array","_key","mutationContext","isBrowser","getAuthData","server","actions","runWithContext","withDevelopmentLogging","name","process","env","NODE_ENV","IS_TESTING","debug","DEBUG","startTime","performance","now","isServer","console","info","result","duration","toFixed","groupCollapsed","trace","groupEnd","error","duration1","JSON","stringify","Error","stack","withTimeoutGuard","timeoutMs","time","ms","minutes","timeoutPromise","Promise","_","reject","setTimeout","race","withValidation","tableName","mutatorName","decorateMutators","modules","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Object","entries","Symbol","iterator","_step","next","done","moduleName","moduleExports","_iteratorNormalCompletion1","_didIteratorError1","_iteratorError1","_iterator1","_step1"],"sources":["../../../src/helpers/createMutators.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -6,9 +6,12 @@ import { getZQL } from "./state";
|
|
|
6
6
|
import { getWhereTableName } from "./where";
|
|
7
7
|
function createPermissions({
|
|
8
8
|
environment,
|
|
9
|
-
schema
|
|
9
|
+
schema,
|
|
10
|
+
adminRoleMode = "all"
|
|
10
11
|
}) {
|
|
11
12
|
function buildPermissionQuery(authData, eb, permissionWhere, objOrId, tableNameOverride) {
|
|
13
|
+
if ((adminRoleMode === "all" || adminRoleMode === "queries") && authData?.role === "admin")
|
|
14
|
+
return eb.cmpLit(!0, "=", !0);
|
|
12
15
|
const tableName = tableNameOverride || getWhereTableName(permissionWhere);
|
|
13
16
|
if (!tableName)
|
|
14
17
|
throw new Error("Must use PermissionWhere for buildPermissionQuery");
|
|
@@ -38,7 +41,7 @@ function createPermissions({
|
|
|
38
41
|
}
|
|
39
42
|
};
|
|
40
43
|
async function ensurePermission(tx, authData, tableName, where, obj) {
|
|
41
|
-
if (authData?.role === "admin")
|
|
44
|
+
if ((adminRoleMode === "all" || adminRoleMode === "mutations") && authData?.role === "admin")
|
|
42
45
|
return;
|
|
43
46
|
const queryBase = getZQL()[tableName];
|
|
44
47
|
let query = null;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/createPermissions.ts"],
|
|
4
|
-
"mappings": "AAAA,SAAS,QAAQ,mBAAmB;AAEpC,SAAS,gCAAgC;AACzC,SAAS,sBAAsB;AAC/B,SAAS,6BAA6B;AACtC,SAAS,cAAc;AACvB,SAAS,yBAAyB;AAU3B,SAAS,kBAA6C;AAAA,EAC3D;AAAA,EACA;
|
|
4
|
+
"mappings": "AAAA,SAAS,QAAQ,mBAAmB;AAEpC,SAAS,gCAAgC;AACzC,SAAS,sBAAsB;AAC/B,SAAS,6BAA6B;AACtC,SAAS,cAAc;AACvB,SAAS,yBAAyB;AAU3B,SAAS,kBAA6C;AAAA,EAC3D;AAAA,EACA;AAAA,EACA,gBAAgB;AAClB,GAIG;AAQD,WAAS,qBACP,UACA,IACA,iBAEA,SACA,mBACA;AAGA,SAD2B,kBAAkB,SAAS,kBAAkB,cAC9C,UAAU,SAAS;AAC3C,aAAO,GAAG,OAAO,IAAM,KAAK,EAAI;AAGlC,UAAM,YAAY,qBAAqB,kBAAkB,eAAe;AAExE,QAAI,CAAC;AACH,YAAM,IAAI,MAAM,mDAAmD;AAGrE,UAAM,cAAc,OAAO,OAAO,SAAS;AAE3C,QAAI,CAAC;AACH,YAAM,IAAI,MAAM,YAAY;AAG9B,UAAM,cAAc,YAAY,YAC1B,mBAAmB,gBAAgB,IAAI,QAAQ;AAErD,QAAI,oBAAoB;AACtB,YAAM,IAAI,MAAM,6BAA6B,SAAS,EAAE;AAG1D,QAAI,qBAAqB;AACvB,aAAO,GAAG,OAAO,IAAM,KAAK,EAAI;AAGlC,QAAI,qBAAqB;AACvB,aAAO,GAAG,OAAO,IAAM,KAAK,EAAK;AAGnC,UAAM,mBAAgC,CAAC;AAEvC,eAAW,OAAO,aAAa;AAC7B,YAAM,QAAQ,OAAO,WAAY,WAAW,UAAU,QAAQ,GAAG;AACjE,uBAAiB,KAAK,GAAG,IAAI,KAAY,KAAK,CAAC;AAAA,IACjD;AAEA,WAAO,GAAG,IAAI,kBAAkB,GAAG,gBAAgB;AAAA,EACrD;AAEA,QAAM,MAAW,OAAO,OAAO,QAAQ;AAErC,QAAI,gBAAgB,UAAU;AAC5B,YAAM,MAAM,eAAe,GACrB,YAAY,kBAAkB,KAAK;AACzC,UAAI,CAAC;AACH,cAAM,IAAI,MAAM,sDAAsD;AAExE,YAAM,iBAAiB,IAAI,IAAI,IAAI,UAAU,WAAW,OAAO,GAAG,GAClE,yBAAyB,GAAG;AAAA,IAC9B;AAAA,EACF;AAEA,iBAAe,iBACb,IACA,UACA,WACA,OACA,KACe;AAGf,SAD6B,kBAAkB,SAAS,kBAAkB,gBAC9C,UAAU,SAAS;AAC7C;AAIF,UAAM,YADa,OAAO,EACG,SAAS;AACtC,QAAI,QAAqC;AAEzC,QAAI;AACF,cAAQ,UACL,MAAM,CAAC,OACC,qBAAqB,UAAU,IAAI,OAAO,GAAG,CACrD,EACA,IAAI,GAEP,OAAO,MAAM,GAAG,IAAI,KAAK,CAAC;AAAA,IAC5B,SAAS,KAAK;AACZ,YAAM,aAAa,GAAG,SAAS,kBAAkB,UAAU,EAAE;AAE7D,UAAI,eAAe,aAAa;AAC9B,YAAI,MAAM,uCAAgC,UAAU;AACpD,cAAI,QAAQ,IAAI,aAAa,iBAAiB,UAC5C,OAAO;AAAA,GAAM,sBAAsB,KAAK,CAAC,KAErC,IAAI,MAAM,GAAG;AAAA,MACrB;AAEA,YAAM,IAAI,MAAM,4BAA4B,UAAU;AAAA,EAAK,GAAG,EAAE;AAAA,IAClE;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -6,9 +6,11 @@ import { getZQL } from "./state.mjs";
|
|
|
6
6
|
import { getWhereTableName } from "./where.mjs";
|
|
7
7
|
function createPermissions({
|
|
8
8
|
environment,
|
|
9
|
-
schema
|
|
9
|
+
schema,
|
|
10
|
+
adminRoleMode = "all"
|
|
10
11
|
}) {
|
|
11
12
|
function buildPermissionQuery(authData, eb, permissionWhere, objOrId, tableNameOverride) {
|
|
13
|
+
if ((adminRoleMode === "all" || adminRoleMode === "queries") && authData?.role === "admin") return eb.cmpLit(!0, "=", !0);
|
|
12
14
|
const tableName = tableNameOverride || getWhereTableName(permissionWhere);
|
|
13
15
|
if (!tableName) throw new Error("Must use PermissionWhere for buildPermissionQuery");
|
|
14
16
|
const tableSchema = schema.tables[tableName];
|
|
@@ -34,7 +36,7 @@ function createPermissions({
|
|
|
34
36
|
}
|
|
35
37
|
};
|
|
36
38
|
async function ensurePermission(tx, authData, tableName, where, obj) {
|
|
37
|
-
if (authData?.role === "admin") return;
|
|
39
|
+
if ((adminRoleMode === "all" || adminRoleMode === "mutations") && authData?.role === "admin") return;
|
|
38
40
|
const queryBase = getZQL()[tableName];
|
|
39
41
|
let query = null;
|
|
40
42
|
try {
|