adminforth 1.3.54-next.3 → 1.3.54-next.31
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/auth.js +42 -56
- package/dist/auth.js.map +1 -0
- package/dist/basePlugin.js +1 -0
- package/dist/basePlugin.js.map +1 -0
- package/dist/dataConnectors/baseConnector.js +108 -122
- package/dist/dataConnectors/baseConnector.js.map +1 -0
- package/dist/dataConnectors/clickhouse.js +132 -150
- package/dist/dataConnectors/clickhouse.js.map +1 -0
- package/dist/dataConnectors/mongo.js +75 -101
- package/dist/dataConnectors/mongo.js.map +1 -0
- package/dist/dataConnectors/postgres.js +124 -143
- package/dist/dataConnectors/postgres.js.map +1 -0
- package/dist/dataConnectors/sqlite.js +113 -130
- package/dist/dataConnectors/sqlite.js.map +1 -0
- package/dist/index.js +197 -217
- package/dist/index.js.map +1 -0
- package/dist/modules/codeInjector.js +480 -486
- package/dist/modules/codeInjector.js.map +1 -0
- package/dist/modules/configValidator.js +31 -22
- package/dist/modules/configValidator.js.map +1 -0
- package/dist/modules/operationalResource.js +50 -70
- package/dist/modules/operationalResource.js.map +1 -0
- package/dist/modules/restApi.js +104 -116
- package/dist/modules/restApi.js.map +1 -0
- package/dist/modules/styleGenerator.js +1 -0
- package/dist/modules/styleGenerator.js.map +1 -0
- package/dist/modules/styles.js +1 -0
- package/dist/modules/styles.js.map +1 -0
- package/dist/modules/utils.js +1 -0
- package/dist/modules/utils.js.map +1 -0
- package/dist/plugins/audit-log/types.js +2 -0
- package/dist/plugins/audit-log/types.js.map +1 -0
- package/dist/plugins/chat-gpt/types.js +2 -0
- package/dist/plugins/chat-gpt/types.js.map +1 -0
- package/dist/plugins/email-password-reset/types.js +2 -0
- package/dist/plugins/email-password-reset/types.js.map +1 -0
- package/dist/plugins/foreign-inline-list/types.js +2 -0
- package/dist/plugins/foreign-inline-list/types.js.map +1 -0
- package/dist/plugins/import-export/types.js +2 -0
- package/dist/plugins/import-export/types.js.map +1 -0
- package/dist/plugins/rich-editor/custom/async-queue.js +29 -0
- package/dist/plugins/rich-editor/custom/async-queue.js.map +1 -0
- package/dist/plugins/rich-editor/dist/async-queue.js +41 -0
- package/dist/plugins/rich-editor/dist/custom/async-queue.js +29 -0
- package/dist/plugins/rich-editor/dist/custom/async-queue.js.map +1 -0
- package/dist/plugins/rich-editor/types.js +16 -0
- package/dist/plugins/rich-editor/types.js.map +1 -0
- package/dist/plugins/two-factors-auth/types.js +2 -0
- package/dist/plugins/two-factors-auth/types.js.map +1 -0
- package/dist/plugins/upload/types.js +2 -0
- package/dist/plugins/upload/types.js.map +1 -0
- package/dist/servers/express.js +30 -42
- package/dist/servers/express.js.map +1 -0
- package/dist/types/AdminForthConfig.js +1 -0
- package/dist/types/AdminForthConfig.js.map +1 -0
- package/dist/types/FrontendAPI.js +1 -0
- package/dist/types/FrontendAPI.js.map +1 -0
- package/package.json +8 -5
- package/auth.ts +0 -140
- package/basePlugin.ts +0 -70
- package/dataConnectors/baseConnector.ts +0 -216
- package/dataConnectors/clickhouse.ts +0 -341
- package/dataConnectors/mongo.ts +0 -202
- package/dataConnectors/postgres.ts +0 -306
- package/dataConnectors/sqlite.ts +0 -254
- package/index.ts +0 -428
- package/modules/codeInjector.ts +0 -736
- package/modules/configValidator.ts +0 -571
- package/modules/operationalResource.ts +0 -98
- package/modules/restApi.ts +0 -718
- package/modules/styleGenerator.ts +0 -55
- package/modules/styles.ts +0 -126
- package/modules/utils.ts +0 -472
- package/servers/express.ts +0 -259
- package/spa/.eslintrc.cjs +0 -14
- package/spa/README.md +0 -39
- package/spa/env.d.ts +0 -1
- package/spa/index.html +0 -23
- package/spa/package-lock.json +0 -4573
- package/spa/package.json +0 -49
- package/spa/postcss.config.js +0 -6
- package/spa/public/assets/favicon.png +0 -0
- package/spa/src/App.vue +0 -418
- package/spa/src/assets/base.css +0 -2
- package/spa/src/assets/logo.svg +0 -19
- package/spa/src/components/AcceptModal.vue +0 -45
- package/spa/src/components/Breadcrumbs.vue +0 -41
- package/spa/src/components/BreadcrumbsWithButtons.vue +0 -26
- package/spa/src/components/CustomDatePicker.vue +0 -176
- package/spa/src/components/CustomDateRangePicker.vue +0 -218
- package/spa/src/components/CustomRangePicker.vue +0 -156
- package/spa/src/components/Dropdown.vue +0 -168
- package/spa/src/components/Filters.vue +0 -222
- package/spa/src/components/HelloWorld.vue +0 -17
- package/spa/src/components/MenuLink.vue +0 -27
- package/spa/src/components/ResourceForm.vue +0 -290
- package/spa/src/components/ResourceListTable.vue +0 -460
- package/spa/src/components/SingleSkeletLoader.vue +0 -13
- package/spa/src/components/SkeleteLoader.vue +0 -23
- package/spa/src/components/ThreeDotsMenu.vue +0 -43
- package/spa/src/components/Toast.vue +0 -78
- package/spa/src/components/ValueRenderer.vue +0 -114
- package/spa/src/components/icons/IconCalendar.vue +0 -5
- package/spa/src/components/icons/IconCommunity.vue +0 -7
- package/spa/src/components/icons/IconDocumentation.vue +0 -7
- package/spa/src/components/icons/IconEcosystem.vue +0 -7
- package/spa/src/components/icons/IconSupport.vue +0 -7
- package/spa/src/components/icons/IconTime.vue +0 -5
- package/spa/src/components/icons/IconTooling.vue +0 -19
- package/spa/src/composables/useFrontendApi.ts +0 -26
- package/spa/src/composables/useStores.ts +0 -131
- package/spa/src/index.scss +0 -31
- package/spa/src/main.ts +0 -18
- package/spa/src/router/index.ts +0 -59
- package/spa/src/spa_types/core.ts +0 -53
- package/spa/src/stores/core.ts +0 -148
- package/spa/src/stores/filters.ts +0 -27
- package/spa/src/stores/modal.ts +0 -48
- package/spa/src/stores/toast.ts +0 -31
- package/spa/src/stores/user.ts +0 -72
- package/spa/src/utils.ts +0 -149
- package/spa/src/views/CreateView.vue +0 -167
- package/spa/src/views/EditView.vue +0 -170
- package/spa/src/views/ListView.vue +0 -279
- package/spa/src/views/LoginView.vue +0 -192
- package/spa/src/views/ResourceParent.vue +0 -17
- package/spa/src/views/ShowView.vue +0 -186
- package/spa/tailwind.config.js +0 -17
- package/spa/tsconfig.app.json +0 -14
- package/spa/tsconfig.json +0 -11
- package/spa/tsconfig.node.json +0 -19
- package/spa/vite.config.ts +0 -56
- package/tsconfig.json +0 -112
- package/types/AdminForthConfig.ts +0 -1762
- package/types/FrontendAPI.ts +0 -143
package/dist/modules/restApi.js
CHANGED
|
@@ -1,36 +1,25 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { AdminForthFilterOperators, AdminForthDataTypes, AllowedActionsEnum, ActionCheckSource, AdminForthResourcePages } from "../types/AdminForthConfig.js";
|
|
11
2
|
import { ADMINFORTH_VERSION, listify } from './utils.js';
|
|
12
3
|
import AdminForthAuth from "../auth.js";
|
|
13
|
-
export function interpretResource(adminUser, resource, meta, source) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
return { allowedActions };
|
|
33
|
-
});
|
|
4
|
+
export async function interpretResource(adminUser, resource, meta, source) {
|
|
5
|
+
var _a;
|
|
6
|
+
// if (process.env.HEAVY_DEBUG) {
|
|
7
|
+
// console.log('🪲Interpreting resource', resource.resourceId, source, 'adminUser', adminUser);
|
|
8
|
+
// }
|
|
9
|
+
const allowedActions = {};
|
|
10
|
+
await Promise.all(Object.entries(((_a = resource.options) === null || _a === void 0 ? void 0 : _a.allowedActions) || {}).map(async ([key, value]) => {
|
|
11
|
+
if (process.env.HEAVY_DEBUG) {
|
|
12
|
+
console.log(`🪲🚥check allowed ${key}, ${value}`);
|
|
13
|
+
}
|
|
14
|
+
// if callable then call
|
|
15
|
+
if (typeof value === 'function') {
|
|
16
|
+
allowedActions[key] = await value({ adminUser, resource, meta, source });
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
allowedActions[key] = value;
|
|
20
|
+
}
|
|
21
|
+
}));
|
|
22
|
+
return { allowedActions };
|
|
34
23
|
}
|
|
35
24
|
export default class AdminForthRestAPI {
|
|
36
25
|
constructor(adminforth) {
|
|
@@ -41,8 +30,8 @@ export default class AdminForthRestAPI {
|
|
|
41
30
|
noAuth: true,
|
|
42
31
|
method: 'POST',
|
|
43
32
|
path: '/login',
|
|
44
|
-
handler:
|
|
45
|
-
var _b, _c, _d
|
|
33
|
+
handler: async ({ body, response }) => {
|
|
34
|
+
var _a, _b, _c, _d;
|
|
46
35
|
const INVALID_MESSAGE = 'Invalid Username or Password';
|
|
47
36
|
const { username, password, rememberMe } = body;
|
|
48
37
|
let adminUser;
|
|
@@ -62,7 +51,7 @@ export default class AdminForthRestAPI {
|
|
|
62
51
|
});
|
|
63
52
|
console.log('Adding passwordHashField to userResource', userResource);
|
|
64
53
|
}
|
|
65
|
-
const userRecord = (
|
|
54
|
+
const userRecord = (_a = (await this.adminforth.connectors[userResource.dataSource].getData({
|
|
66
55
|
resource: userResource,
|
|
67
56
|
filters: [
|
|
68
57
|
{ field: this.adminforth.config.auth.usernameField, operator: AdminForthFilterOperators.EQ, value: username },
|
|
@@ -70,12 +59,12 @@ export default class AdminForthRestAPI {
|
|
|
70
59
|
limit: 1,
|
|
71
60
|
offset: 0,
|
|
72
61
|
sort: [],
|
|
73
|
-
})).data) === null ||
|
|
62
|
+
})).data) === null || _a === void 0 ? void 0 : _a[0];
|
|
74
63
|
if (!userRecord) {
|
|
75
64
|
return { error: INVALID_MESSAGE };
|
|
76
65
|
}
|
|
77
66
|
const passwordHash = userRecord[this.adminforth.config.auth.passwordHashField];
|
|
78
|
-
const valid =
|
|
67
|
+
const valid = await AdminForthAuth.verifyPassword(password, passwordHash);
|
|
79
68
|
if (valid) {
|
|
80
69
|
adminUser = {
|
|
81
70
|
dbUser: userRecord,
|
|
@@ -85,9 +74,9 @@ export default class AdminForthRestAPI {
|
|
|
85
74
|
const beforeLoginConfirmation = this.adminforth.config.auth.beforeLoginConfirmation;
|
|
86
75
|
if (beforeLoginConfirmation === null || beforeLoginConfirmation === void 0 ? void 0 : beforeLoginConfirmation.length) {
|
|
87
76
|
for (const hook of beforeLoginConfirmation) {
|
|
88
|
-
const resp =
|
|
89
|
-
if ((
|
|
90
|
-
toReturn = { ok: resp.ok, redirectTo: (
|
|
77
|
+
const resp = await hook({ adminUser, response });
|
|
78
|
+
if ((_b = resp === null || resp === void 0 ? void 0 : resp.body) === null || _b === void 0 ? void 0 : _b.redirectTo) {
|
|
79
|
+
toReturn = { ok: resp.ok, redirectTo: (_c = resp === null || resp === void 0 ? void 0 : resp.body) === null || _c === void 0 ? void 0 : _c.redirectTo, allowedLogin: (_d = resp === null || resp === void 0 ? void 0 : resp.body) === null || _d === void 0 ? void 0 : _d.allowedLogin };
|
|
91
80
|
break;
|
|
92
81
|
}
|
|
93
82
|
}
|
|
@@ -106,30 +95,30 @@ export default class AdminForthRestAPI {
|
|
|
106
95
|
return { error: INVALID_MESSAGE };
|
|
107
96
|
}
|
|
108
97
|
return toReturn;
|
|
109
|
-
}
|
|
98
|
+
}
|
|
110
99
|
});
|
|
111
100
|
server.endpoint({
|
|
112
101
|
method: 'POST',
|
|
113
102
|
path: '/check_auth',
|
|
114
|
-
handler:
|
|
103
|
+
handler: async ({ adminUser }) => {
|
|
115
104
|
return { ok: true };
|
|
116
|
-
}
|
|
105
|
+
},
|
|
117
106
|
});
|
|
118
107
|
server.endpoint({
|
|
119
108
|
noAuth: true,
|
|
120
109
|
method: 'POST',
|
|
121
110
|
path: '/logout',
|
|
122
|
-
handler:
|
|
111
|
+
handler: async ({ response }) => {
|
|
123
112
|
this.adminforth.auth.removeAuthCookie(response);
|
|
124
113
|
return { ok: true };
|
|
125
|
-
}
|
|
114
|
+
},
|
|
126
115
|
});
|
|
127
116
|
server.endpoint({
|
|
128
117
|
noAuth: true,
|
|
129
118
|
method: 'GET',
|
|
130
119
|
path: '/get_public_config',
|
|
131
|
-
handler:
|
|
132
|
-
var
|
|
120
|
+
handler: async ({ body }) => {
|
|
121
|
+
var _a;
|
|
133
122
|
// find resource
|
|
134
123
|
if (!this.adminforth.config.auth) {
|
|
135
124
|
throw new Error('No config.auth defined');
|
|
@@ -142,19 +131,19 @@ export default class AdminForthRestAPI {
|
|
|
142
131
|
usernameFieldName: usernameColumn.label,
|
|
143
132
|
loginBackgroundImage: this.adminforth.config.auth.loginBackgroundImage,
|
|
144
133
|
loginBackgroundPosition: this.adminforth.config.auth.loginBackgroundPosition,
|
|
145
|
-
title: (
|
|
134
|
+
title: (_a = this.adminforth.config.customization) === null || _a === void 0 ? void 0 : _a.title,
|
|
146
135
|
demoCredentials: this.adminforth.config.auth.demoCredentials,
|
|
147
136
|
loginPromptHTML: this.adminforth.config.auth.loginPromptHTML,
|
|
148
137
|
loginPageInjections: this.adminforth.config.customization.loginPageInjections,
|
|
149
138
|
rememberMeDays: this.adminforth.config.auth.rememberMeDays,
|
|
150
139
|
};
|
|
151
|
-
}
|
|
140
|
+
},
|
|
152
141
|
});
|
|
153
142
|
server.endpoint({
|
|
154
143
|
method: 'GET',
|
|
155
144
|
path: '/get_base_config',
|
|
156
|
-
handler:
|
|
157
|
-
var
|
|
145
|
+
handler: async ({ input, adminUser, cookies }) => {
|
|
146
|
+
var _a, _b, _c, _d, _e;
|
|
158
147
|
let username = '';
|
|
159
148
|
let userFullName = '';
|
|
160
149
|
const dbUser = adminUser.dbUser;
|
|
@@ -176,14 +165,12 @@ export default class AdminForthRestAPI {
|
|
|
176
165
|
return toReturn;
|
|
177
166
|
}
|
|
178
167
|
};
|
|
179
|
-
function processMenuItem(menuItem) {
|
|
180
|
-
|
|
181
|
-
if (menuItem.badge) {
|
|
182
|
-
|
|
183
|
-
menuItem.badge = yield menuItem.badge(adminUser);
|
|
184
|
-
}
|
|
168
|
+
async function processMenuItem(menuItem) {
|
|
169
|
+
if (menuItem.badge) {
|
|
170
|
+
if (typeof menuItem.badge === 'function') {
|
|
171
|
+
menuItem.badge = await menuItem.badge(adminUser);
|
|
185
172
|
}
|
|
186
|
-
}
|
|
173
|
+
}
|
|
187
174
|
}
|
|
188
175
|
let newMenu = [];
|
|
189
176
|
for (let menuItem of this.adminforth.config.menu) {
|
|
@@ -202,15 +189,15 @@ export default class AdminForthRestAPI {
|
|
|
202
189
|
continue;
|
|
203
190
|
}
|
|
204
191
|
}
|
|
205
|
-
|
|
192
|
+
await processMenuItem(newChild);
|
|
206
193
|
newChildren.push(newChild);
|
|
207
194
|
}
|
|
208
195
|
newMenuItem = Object.assign(Object.assign({}, newMenuItem), { children: newChildren });
|
|
209
196
|
}
|
|
210
|
-
|
|
197
|
+
await processMenuItem(newMenuItem);
|
|
211
198
|
newMenu.push(newMenuItem);
|
|
212
199
|
}
|
|
213
|
-
const announcementBadge = (
|
|
200
|
+
const announcementBadge = (_b = (_a = this.adminforth.config.customization).announcementBadge) === null || _b === void 0 ? void 0 : _b.call(_a, adminUser);
|
|
214
201
|
return {
|
|
215
202
|
user: userData,
|
|
216
203
|
resources: this.adminforth.config.resources.map((res) => ({
|
|
@@ -227,15 +214,15 @@ export default class AdminForthRestAPI {
|
|
|
227
214
|
deleteConfirmation: this.adminforth.config.deleteConfirmation,
|
|
228
215
|
auth: this.adminforth.config.auth,
|
|
229
216
|
usernameField: this.adminforth.config.auth.usernameField,
|
|
230
|
-
title: (
|
|
231
|
-
emptyFieldPlaceholder: (
|
|
217
|
+
title: (_c = this.adminforth.config.customization) === null || _c === void 0 ? void 0 : _c.title,
|
|
218
|
+
emptyFieldPlaceholder: (_d = this.adminforth.config.customization) === null || _d === void 0 ? void 0 : _d.emptyFieldPlaceholder,
|
|
232
219
|
announcementBadge,
|
|
233
|
-
globalInjections: (
|
|
220
|
+
globalInjections: (_e = this.adminforth.config.customization) === null || _e === void 0 ? void 0 : _e.globalInjections,
|
|
234
221
|
},
|
|
235
222
|
adminUser,
|
|
236
223
|
version: ADMINFORTH_VERSION,
|
|
237
224
|
};
|
|
238
|
-
}
|
|
225
|
+
},
|
|
239
226
|
});
|
|
240
227
|
function checkAccess(action, allowedActions) {
|
|
241
228
|
const allowed = allowedActions[action];
|
|
@@ -247,7 +234,7 @@ export default class AdminForthRestAPI {
|
|
|
247
234
|
server.endpoint({
|
|
248
235
|
method: 'POST',
|
|
249
236
|
path: '/get_resource',
|
|
250
|
-
handler:
|
|
237
|
+
handler: async ({ body, adminUser }) => {
|
|
251
238
|
const { resourceId } = body;
|
|
252
239
|
if (!this.adminforth.statuses.dbDiscover) {
|
|
253
240
|
return { error: 'Database discovery not started' };
|
|
@@ -259,11 +246,11 @@ export default class AdminForthRestAPI {
|
|
|
259
246
|
if (!resource) {
|
|
260
247
|
return { error: `Resource ${resourceId} not found` };
|
|
261
248
|
}
|
|
262
|
-
const { allowedActions } =
|
|
249
|
+
const { allowedActions } = await interpretResource(adminUser, resource, {}, ActionCheckSource.DisplayButtons);
|
|
263
250
|
const allowedBulkActions = [];
|
|
264
|
-
|
|
251
|
+
await Promise.all(resource.options.bulkActions.map(async (action) => {
|
|
265
252
|
if (action.allowed) {
|
|
266
|
-
const res =
|
|
253
|
+
const res = await action.allowed({ adminUser, resource, allowedActions });
|
|
267
254
|
if (res) {
|
|
268
255
|
allowedBulkActions.push(action);
|
|
269
256
|
}
|
|
@@ -271,18 +258,18 @@ export default class AdminForthRestAPI {
|
|
|
271
258
|
else {
|
|
272
259
|
allowedBulkActions.push(action);
|
|
273
260
|
}
|
|
274
|
-
}))
|
|
261
|
+
}));
|
|
275
262
|
// exclude "plugins" key
|
|
276
263
|
return {
|
|
277
264
|
resource: Object.assign(Object.assign({}, resource), { plugins: undefined, options: Object.assign(Object.assign({}, resource.options), { bulkActions: allowedBulkActions, allowedActions }) })
|
|
278
265
|
};
|
|
279
|
-
}
|
|
266
|
+
},
|
|
280
267
|
});
|
|
281
268
|
server.endpoint({
|
|
282
269
|
method: 'POST',
|
|
283
270
|
path: '/get_resource_data',
|
|
284
|
-
handler:
|
|
285
|
-
var
|
|
271
|
+
handler: async ({ body, adminUser }) => {
|
|
272
|
+
var _a, _b, _c, _d;
|
|
286
273
|
const { resourceId, source } = body;
|
|
287
274
|
if (['show', 'list'].includes(source) === false) {
|
|
288
275
|
return { error: 'Invalid source, should be list or show' };
|
|
@@ -297,13 +284,13 @@ export default class AdminForthRestAPI {
|
|
|
297
284
|
if (!resource) {
|
|
298
285
|
return { error: `Resource ${resourceId} not found` };
|
|
299
286
|
}
|
|
300
|
-
const { allowedActions } =
|
|
287
|
+
const { allowedActions } = await interpretResource(adminUser, resource, { requestBody: body }, ActionCheckSource.DisplayButtons);
|
|
301
288
|
const { allowed, error } = checkAccess(source, allowedActions);
|
|
302
289
|
if (!allowed) {
|
|
303
290
|
return { error };
|
|
304
291
|
}
|
|
305
|
-
for (const hook of listify((
|
|
306
|
-
const resp =
|
|
292
|
+
for (const hook of listify((_b = (_a = resource.hooks) === null || _a === void 0 ? void 0 : _a[source]) === null || _b === void 0 ? void 0 : _b.beforeDatasourceRequest)) {
|
|
293
|
+
const resp = await hook({ resource, query: body, adminUser });
|
|
307
294
|
if (!resp || (!resp.ok && !resp.error)) {
|
|
308
295
|
throw new Error(`Hook must return object with {ok: true} or { error: 'Error' } `);
|
|
309
296
|
}
|
|
@@ -329,7 +316,7 @@ export default class AdminForthRestAPI {
|
|
|
329
316
|
return { data: [], total: 0 };
|
|
330
317
|
}
|
|
331
318
|
}
|
|
332
|
-
const data =
|
|
319
|
+
const data = await this.adminforth.connectors[resource.dataSource].getData({
|
|
333
320
|
resource,
|
|
334
321
|
limit,
|
|
335
322
|
offset,
|
|
@@ -338,7 +325,7 @@ export default class AdminForthRestAPI {
|
|
|
338
325
|
getTotals: true,
|
|
339
326
|
});
|
|
340
327
|
// for foreign keys, add references
|
|
341
|
-
|
|
328
|
+
await Promise.all(resource.columns.filter((col) => col.foreignResource).map(async (col) => {
|
|
342
329
|
const targetResource = this.adminforth.config.resources.find((res) => res.resourceId == col.foreignResource.resourceId);
|
|
343
330
|
const targetConnector = this.adminforth.connectors[targetResource.dataSource];
|
|
344
331
|
const targetResourcePkField = targetResource.columns.find((col) => col.primaryKey).name;
|
|
@@ -346,7 +333,7 @@ export default class AdminForthRestAPI {
|
|
|
346
333
|
if (pksUnique.length === 0) {
|
|
347
334
|
return;
|
|
348
335
|
}
|
|
349
|
-
const targetData =
|
|
336
|
+
const targetData = await targetConnector.getData({
|
|
350
337
|
resource: targetResource,
|
|
351
338
|
limit: limit,
|
|
352
339
|
offset: 0,
|
|
@@ -369,7 +356,7 @@ export default class AdminForthRestAPI {
|
|
|
369
356
|
data.data.forEach((item) => {
|
|
370
357
|
item[col.name] = targetDataMap[item[col.name]];
|
|
371
358
|
});
|
|
372
|
-
}))
|
|
359
|
+
}));
|
|
373
360
|
// remove all columns which are not defined in resources, or defined but backendOnly
|
|
374
361
|
data.data.forEach((item) => {
|
|
375
362
|
Object.keys(item).forEach((key) => {
|
|
@@ -380,13 +367,13 @@ export default class AdminForthRestAPI {
|
|
|
380
367
|
item._label = resource.recordLabel(item);
|
|
381
368
|
});
|
|
382
369
|
if (resource.options.listTableClickUrl) {
|
|
383
|
-
|
|
384
|
-
item._clickUrl =
|
|
385
|
-
}))
|
|
370
|
+
await Promise.all(data.data.map(async (item) => {
|
|
371
|
+
item._clickUrl = await resource.options.listTableClickUrl(item, adminUser);
|
|
372
|
+
}));
|
|
386
373
|
}
|
|
387
374
|
// only after adminforth made all post processing, give user ability to edit it
|
|
388
|
-
for (const hook of listify((
|
|
389
|
-
const resp =
|
|
375
|
+
for (const hook of listify((_d = (_c = resource.hooks) === null || _c === void 0 ? void 0 : _c[source]) === null || _d === void 0 ? void 0 : _d.afterDatasourceResponse)) {
|
|
376
|
+
const resp = await hook({ resource, response: data.data, adminUser });
|
|
390
377
|
if (!resp || (!resp.ok && !resp.error)) {
|
|
391
378
|
throw new Error(`Hook must return object with {ok: true} or { error: 'Error' } `);
|
|
392
379
|
}
|
|
@@ -395,13 +382,13 @@ export default class AdminForthRestAPI {
|
|
|
395
382
|
}
|
|
396
383
|
}
|
|
397
384
|
return Object.assign(Object.assign({}, data), { options: resource === null || resource === void 0 ? void 0 : resource.options });
|
|
398
|
-
}
|
|
385
|
+
},
|
|
399
386
|
});
|
|
400
387
|
server.endpoint({
|
|
401
388
|
method: 'POST',
|
|
402
389
|
path: '/get_resource_foreign_data',
|
|
403
|
-
handler:
|
|
404
|
-
var
|
|
390
|
+
handler: async ({ body, adminUser }) => {
|
|
391
|
+
var _a, _b, _c, _d;
|
|
405
392
|
const { resourceId, column } = body;
|
|
406
393
|
if (!this.adminforth.statuses.dbDiscover) {
|
|
407
394
|
return { error: 'Database discovery not started' };
|
|
@@ -422,8 +409,8 @@ export default class AdminForthRestAPI {
|
|
|
422
409
|
}
|
|
423
410
|
const targetResourceId = columnConfig.foreignResource.resourceId;
|
|
424
411
|
const targetResource = this.adminforth.config.resources.find((res) => res.resourceId == targetResourceId);
|
|
425
|
-
for (const hook of listify((
|
|
426
|
-
const resp =
|
|
412
|
+
for (const hook of listify((_b = (_a = columnConfig.foreignResource.hooks) === null || _a === void 0 ? void 0 : _a.dropdownList) === null || _b === void 0 ? void 0 : _b.beforeDatasourceRequest)) {
|
|
413
|
+
const resp = await hook({ query: body, adminUser, resource: targetResource });
|
|
427
414
|
if (!resp || (!resp.ok && !resp.error)) {
|
|
428
415
|
throw new Error(`Hook must return object with {ok: true} or { error: 'Error' } `);
|
|
429
416
|
}
|
|
@@ -432,7 +419,7 @@ export default class AdminForthRestAPI {
|
|
|
432
419
|
}
|
|
433
420
|
}
|
|
434
421
|
const { limit, offset, filters, sort } = body;
|
|
435
|
-
const dbDataItems =
|
|
422
|
+
const dbDataItems = await this.adminforth.connectors[targetResource.dataSource].getData({
|
|
436
423
|
resource: targetResource,
|
|
437
424
|
limit,
|
|
438
425
|
offset,
|
|
@@ -451,8 +438,8 @@ export default class AdminForthRestAPI {
|
|
|
451
438
|
const response = {
|
|
452
439
|
items
|
|
453
440
|
};
|
|
454
|
-
for (const hook of listify((
|
|
455
|
-
const resp =
|
|
441
|
+
for (const hook of listify((_d = (_c = columnConfig.foreignResource.hooks) === null || _c === void 0 ? void 0 : _c.dropdownList) === null || _d === void 0 ? void 0 : _d.afterDatasourceResponse)) {
|
|
442
|
+
const resp = await hook({ response, adminUser, resource: targetResource });
|
|
456
443
|
if (!resp || (!resp.ok && !resp.error)) {
|
|
457
444
|
throw new Error(`Hook must return object with {ok: true} or { error: 'Error' } `);
|
|
458
445
|
}
|
|
@@ -461,12 +448,12 @@ export default class AdminForthRestAPI {
|
|
|
461
448
|
}
|
|
462
449
|
}
|
|
463
450
|
return response;
|
|
464
|
-
}
|
|
451
|
+
},
|
|
465
452
|
});
|
|
466
453
|
server.endpoint({
|
|
467
454
|
method: 'POST',
|
|
468
455
|
path: '/get_min_max_for_columns',
|
|
469
|
-
handler:
|
|
456
|
+
handler: async ({ body }) => {
|
|
470
457
|
const { resourceId } = body;
|
|
471
458
|
if (!this.adminforth.statuses.dbDiscover) {
|
|
472
459
|
return { error: 'Database discovery not started' };
|
|
@@ -478,7 +465,7 @@ export default class AdminForthRestAPI {
|
|
|
478
465
|
if (!resource) {
|
|
479
466
|
return { error: `Resource '${resourceId}' not found` };
|
|
480
467
|
}
|
|
481
|
-
const item =
|
|
468
|
+
const item = await this.adminforth.connectors[resource.dataSource].getMinMaxForColumns({
|
|
482
469
|
resource,
|
|
483
470
|
columns: resource.columns.filter((col) => [
|
|
484
471
|
AdminForthDataTypes.INTEGER,
|
|
@@ -490,31 +477,31 @@ export default class AdminForthRestAPI {
|
|
|
490
477
|
].includes(col.type) && col.allowMinMaxQuery === true),
|
|
491
478
|
});
|
|
492
479
|
return item;
|
|
493
|
-
}
|
|
480
|
+
},
|
|
494
481
|
});
|
|
495
482
|
server.endpoint({
|
|
496
483
|
method: 'POST',
|
|
497
484
|
path: '/create_record',
|
|
498
|
-
handler:
|
|
499
|
-
var
|
|
485
|
+
handler: async ({ body, adminUser }) => {
|
|
486
|
+
var _a;
|
|
500
487
|
const resource = this.adminforth.config.resources.find((res) => res.resourceId == body['resourceId']);
|
|
501
488
|
if (!resource) {
|
|
502
489
|
return { error: `Resource '${body['resourceId']}' not found` };
|
|
503
490
|
}
|
|
504
|
-
const { allowedActions } =
|
|
491
|
+
const { allowedActions } = await interpretResource(adminUser, resource, { requestBody: body }, ActionCheckSource.CreateRequest);
|
|
505
492
|
const { allowed, error } = checkAccess(AllowedActionsEnum.create, allowedActions);
|
|
506
493
|
if (!allowed) {
|
|
507
494
|
return { error };
|
|
508
495
|
}
|
|
509
496
|
const { record } = body;
|
|
510
497
|
for (const column of resource.columns) {
|
|
511
|
-
if (((
|
|
498
|
+
if (((_a = column.required) === null || _a === void 0 ? void 0 : _a.create) &&
|
|
512
499
|
record[column.name] === undefined &&
|
|
513
500
|
column.showIn.includes(AdminForthResourcePages.create)) {
|
|
514
501
|
return { error: `Column '${column.name}' is required`, ok: false };
|
|
515
502
|
}
|
|
516
503
|
}
|
|
517
|
-
const response =
|
|
504
|
+
const response = await this.adminforth.createResourceRecord({ resource, record, adminUser });
|
|
518
505
|
if (response.error) {
|
|
519
506
|
return { error: response.error, ok: false };
|
|
520
507
|
}
|
|
@@ -523,44 +510,44 @@ export default class AdminForthRestAPI {
|
|
|
523
510
|
newRecordId: response.createdRecord[connector.getPrimaryKey(resource)],
|
|
524
511
|
ok: true
|
|
525
512
|
};
|
|
526
|
-
}
|
|
513
|
+
}
|
|
527
514
|
});
|
|
528
515
|
server.endpoint({
|
|
529
516
|
method: 'POST',
|
|
530
517
|
path: '/update_record',
|
|
531
|
-
handler:
|
|
518
|
+
handler: async ({ body, adminUser }) => {
|
|
532
519
|
const resource = this.adminforth.config.resources.find((res) => res.resourceId == body['resourceId']);
|
|
533
520
|
if (!resource) {
|
|
534
521
|
return { error: `Resource '${body['resourceId']}' not found` };
|
|
535
522
|
}
|
|
536
523
|
const recordId = body['recordId'];
|
|
537
524
|
const connector = this.adminforth.connectors[resource.dataSource];
|
|
538
|
-
const oldRecord =
|
|
525
|
+
const oldRecord = await connector.getRecordByPrimaryKey(resource, recordId);
|
|
539
526
|
if (!oldRecord) {
|
|
540
527
|
const primaryKeyColumn = resource.columns.find((col) => col.primaryKey);
|
|
541
528
|
return { error: `Record with ${primaryKeyColumn.name} ${recordId} not found` };
|
|
542
529
|
}
|
|
543
530
|
const record = body['record'];
|
|
544
|
-
const { allowedActions } =
|
|
531
|
+
const { allowedActions } = await interpretResource(adminUser, resource, { requestBody: body, newRecord: record, oldRecord }, ActionCheckSource.EditRequest);
|
|
545
532
|
const { allowed, error: allowedError } = checkAccess(AllowedActionsEnum.edit, allowedActions);
|
|
546
533
|
if (!allowed) {
|
|
547
534
|
return { allowedError };
|
|
548
535
|
}
|
|
549
|
-
const { error } =
|
|
536
|
+
const { error } = await this.adminforth.updateResourceRecord({ resource, record, adminUser, oldRecord, recordId });
|
|
550
537
|
if (error) {
|
|
551
538
|
return { error };
|
|
552
539
|
}
|
|
553
540
|
return {
|
|
554
541
|
ok: true
|
|
555
542
|
};
|
|
556
|
-
}
|
|
543
|
+
}
|
|
557
544
|
});
|
|
558
545
|
server.endpoint({
|
|
559
546
|
method: 'POST',
|
|
560
547
|
path: '/delete_record',
|
|
561
|
-
handler:
|
|
548
|
+
handler: async ({ body, adminUser }) => {
|
|
562
549
|
const resource = this.adminforth.config.resources.find((res) => res.resourceId == body['resourceId']);
|
|
563
|
-
const record =
|
|
550
|
+
const record = await this.adminforth.connectors[resource.dataSource].getRecordByPrimaryKey(resource, body['primaryKey']);
|
|
564
551
|
if (!resource) {
|
|
565
552
|
return { error: `Resource '${body['resourceId']}' not found` };
|
|
566
553
|
}
|
|
@@ -570,12 +557,12 @@ export default class AdminForthRestAPI {
|
|
|
570
557
|
if (resource.options.allowedActions.delete === false) {
|
|
571
558
|
return { error: `Resource '${resource.resourceId}' does not allow delete action` };
|
|
572
559
|
}
|
|
573
|
-
const { allowedActions } =
|
|
560
|
+
const { allowedActions } = await interpretResource(adminUser, resource, { requestBody: body }, ActionCheckSource.DeleteRequest);
|
|
574
561
|
const { allowed, error } = checkAccess(AllowedActionsEnum.delete, allowedActions);
|
|
575
562
|
if (!allowed) {
|
|
576
563
|
return { error };
|
|
577
564
|
}
|
|
578
|
-
const { error: deleteError } =
|
|
565
|
+
const { error: deleteError } = await this.adminforth.deleteResourceRecord({ resource, record, adminUser, recordId: body['primaryKey'] });
|
|
579
566
|
if (deleteError) {
|
|
580
567
|
return { error: deleteError };
|
|
581
568
|
}
|
|
@@ -583,33 +570,33 @@ export default class AdminForthRestAPI {
|
|
|
583
570
|
ok: true,
|
|
584
571
|
recordId: body['primaryKey']
|
|
585
572
|
};
|
|
586
|
-
}
|
|
573
|
+
}
|
|
587
574
|
});
|
|
588
575
|
server.endpoint({
|
|
589
576
|
method: 'POST',
|
|
590
577
|
path: '/start_bulk_action',
|
|
591
|
-
handler:
|
|
578
|
+
handler: async ({ body, adminUser }) => {
|
|
592
579
|
const { resourceId, actionId, recordIds } = body;
|
|
593
580
|
const resource = this.adminforth.config.resources.find((res) => res.resourceId == resourceId);
|
|
594
581
|
if (!resource) {
|
|
595
582
|
return { error: `Resource '${resourceId}' not found` };
|
|
596
583
|
}
|
|
597
|
-
const { allowedActions } =
|
|
584
|
+
const { allowedActions } = await interpretResource(adminUser, resource, { requestBody: body }, ActionCheckSource.BulkActionRequest);
|
|
598
585
|
const action = resource.options.bulkActions.find((act) => act.id == actionId);
|
|
599
586
|
if (!action) {
|
|
600
587
|
return { error: `Action '${actionId}' not found` };
|
|
601
588
|
}
|
|
602
589
|
if (action.allowed) {
|
|
603
|
-
const execAllowed =
|
|
590
|
+
const execAllowed = await action.allowed({ adminUser, resource, selectedIds: recordIds, allowedActions });
|
|
604
591
|
if (!execAllowed) {
|
|
605
592
|
return { error: `Action '${actionId}' is not allowed` };
|
|
606
593
|
}
|
|
607
594
|
}
|
|
608
|
-
const response =
|
|
595
|
+
const response = await action.action({ selectedIds: recordIds, adminUser, resource });
|
|
609
596
|
return Object.assign({ actionId,
|
|
610
597
|
recordIds,
|
|
611
598
|
resourceId }, response);
|
|
612
|
-
}
|
|
599
|
+
}
|
|
613
600
|
});
|
|
614
601
|
// setup endpoints for all plugins
|
|
615
602
|
this.adminforth.activatedPlugins.forEach((plugin) => {
|
|
@@ -617,3 +604,4 @@ export default class AdminForthRestAPI {
|
|
|
617
604
|
});
|
|
618
605
|
}
|
|
619
606
|
}
|
|
607
|
+
//# sourceMappingURL=restApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restApi.js","sourceRoot":"","sources":["../../modules/restApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styleGenerator.js","sourceRoot":"","sources":["../../modules/styleGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAC,SAAS,EAAC,UAAU,EAAC,oBAAoB,EAAC,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC5H,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,MAAM,OAAO,eAAe;IAIxB,YAAY,WAAgB;QAE1B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,MAAM,EAAE,CAAC;IAChC,CAAC;IAEO,mBAAmB,CAAC,QAAY;QACtC,IAAI,iBAAiB,GAAG,EAAE,CAAA;QAC1B,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAC,EAAE;gBACjC,iBAAiB,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;YACrD,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAEO,WAAW,CAAC,GAAO,EAAE,YAAgB;QAC3C,MAAM,EAAC,UAAU,EAAC,YAAY,EAAC,WAAW,EAAC,YAAY,EAAE,YAAY,EAAC,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;QACnG,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,GAAG,CAAC;QACb,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7D,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;YAClC,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;YAC/C,CAAC;YACD,IAAI,YAAY,EAAC,CAAC;gBAChB,OAAO,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;YAChD,CAAC;YACD,IAAI,YAAY,EAAC,CAAC;gBAChB,OAAO,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;YAChD,CAAC;YACD,OAAO,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,WAAW;QACT,IAAI,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAC7F,IAAI,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;QACjC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAC,KAAK,CAAC,EAAC,EAAE;YAE5C,MAAM,CAAC,GAAG,CAAC,GAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAC,MAAM,CAAC,CAAA;QAC/C,CAAC,CAAC,CAAA;QACF,OAAO,YAAY,CAAC;IACtB,CAAC;CACF"}
|