adminizer 4.4.0-build.147 → 4.4.0-build.149
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.
|
@@ -425,8 +425,9 @@ export interface CreateUpdateConfig {
|
|
|
425
425
|
entityModifier?: <T>(fieldData: T) => T;
|
|
426
426
|
/**
|
|
427
427
|
* You can change standard controller for any entity by this property
|
|
428
|
+
* Can be either a string path (for dynamic import) or a controller function
|
|
428
429
|
* */
|
|
429
|
-
controller?: string;
|
|
430
|
+
controller?: string | ((req: ReqType, res: ResType) => Promise<any>);
|
|
430
431
|
}
|
|
431
432
|
export interface HrefConfig {
|
|
432
433
|
id: string;
|
|
@@ -3,6 +3,7 @@ import { AbstractAdapter, AbstractModel } from "../AbstractModel.js";
|
|
|
3
3
|
import path from "path";
|
|
4
4
|
import fs from "fs";
|
|
5
5
|
import { pathToFileURL } from "url";
|
|
6
|
+
import { fileURLToPath } from "url";
|
|
6
7
|
function generateAssociationsFromSchema(models, schemas) {
|
|
7
8
|
for (const modelName in schemas) {
|
|
8
9
|
const schema = schemas[modelName];
|
|
@@ -556,12 +557,14 @@ export class SequelizeAdapter extends AbstractAdapter {
|
|
|
556
557
|
}
|
|
557
558
|
/** Registration of system models */
|
|
558
559
|
static async registerSystemModels(sequelize, alter = true) {
|
|
560
|
+
// Get current file directory from import.meta.url
|
|
561
|
+
const currentDir = import.meta.url ? path.dirname(fileURLToPath(import.meta.url)) : process.cwd();
|
|
559
562
|
// Try multiple possible model locations
|
|
560
563
|
const possiblePaths = [
|
|
561
|
-
path.resolve(
|
|
562
|
-
path.resolve(
|
|
563
|
-
path.resolve(
|
|
564
|
-
path.resolve(
|
|
564
|
+
path.resolve(currentDir, "../../../../models"),
|
|
565
|
+
path.resolve(currentDir, "../../../../src/models"),
|
|
566
|
+
path.resolve(currentDir, "../../../models"),
|
|
567
|
+
path.resolve(currentDir, "../../../src/models"),
|
|
565
568
|
path.resolve(process.cwd(), "node_modules/adminizer/src/models"),
|
|
566
569
|
path.resolve(process.cwd(), "node_modules/adminizer/models")
|
|
567
570
|
];
|
package/package.json
CHANGED
package/system/Router.js
CHANGED
|
@@ -126,8 +126,15 @@ export default class Router {
|
|
|
126
126
|
if (modelConfig.add) {
|
|
127
127
|
let addHandler = modelConfig.add;
|
|
128
128
|
if (addHandler.controller) {
|
|
129
|
-
|
|
130
|
-
|
|
129
|
+
if (typeof addHandler.controller === 'string') {
|
|
130
|
+
// Dynamic import for string paths
|
|
131
|
+
let controller = await import(addHandler.controller);
|
|
132
|
+
adminizer.app.all(`${adminizer.config.routePrefix}/model/${model}/add`, adminizer.policyManager.bindPolicies(policies, controller.default));
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
// Direct function reference
|
|
136
|
+
adminizer.app.all(`${adminizer.config.routePrefix}/model/${model}/add`, adminizer.policyManager.bindPolicies(policies, addHandler.controller));
|
|
137
|
+
}
|
|
131
138
|
}
|
|
132
139
|
else {
|
|
133
140
|
adminizer.app.all(`${adminizer.config.routePrefix}/model/${model}/add`, adminizer.policyManager.bindPolicies(policies, _add));
|
|
@@ -142,8 +149,15 @@ export default class Router {
|
|
|
142
149
|
if (modelConfig.edit) {
|
|
143
150
|
let editHandler = modelConfig.edit;
|
|
144
151
|
if (editHandler.controller) {
|
|
145
|
-
|
|
146
|
-
|
|
152
|
+
if (typeof editHandler.controller === 'string') {
|
|
153
|
+
// Dynamic import for string paths
|
|
154
|
+
let controller = await import(editHandler.controller);
|
|
155
|
+
adminizer.app.all(`${adminizer.config.routePrefix}/model/${model}/edit/:id`, adminizer.policyManager.bindPolicies(policies, controller.default));
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
// Direct function reference
|
|
159
|
+
adminizer.app.all(`${adminizer.config.routePrefix}/model/${model}/edit/:id`, adminizer.policyManager.bindPolicies(policies, editHandler.controller));
|
|
160
|
+
}
|
|
147
161
|
}
|
|
148
162
|
else {
|
|
149
163
|
adminizer.app.all(`${adminizer.config.routePrefix}/model/${model}/edit/:id`, adminizer.policyManager.bindPolicies(policies, _edit));
|
package/system/defaults.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
import { FileStorageHelper } from "../helpers/fileStorageHelper.js";
|
|
3
3
|
import timezones from "../lib/timezones.js";
|
|
4
|
+
import addUser from "../controllers/addUser.js";
|
|
5
|
+
import editUser from "../controllers/editUser.js";
|
|
6
|
+
import addGroup from "../controllers/addGroup.js";
|
|
7
|
+
import editGroup from "../controllers/editGroup.js";
|
|
4
8
|
/**
|
|
5
9
|
* Default admin config
|
|
6
10
|
*/
|
|
@@ -37,10 +41,10 @@ let adminpanelConfig = {
|
|
|
37
41
|
section: "System"
|
|
38
42
|
},
|
|
39
43
|
add: {
|
|
40
|
-
controller:
|
|
44
|
+
controller: addUser
|
|
41
45
|
},
|
|
42
46
|
edit: {
|
|
43
|
-
controller:
|
|
47
|
+
controller: editUser
|
|
44
48
|
},
|
|
45
49
|
fields: {
|
|
46
50
|
login: {
|
|
@@ -82,10 +86,10 @@ let adminpanelConfig = {
|
|
|
82
86
|
section: "System"
|
|
83
87
|
},
|
|
84
88
|
add: {
|
|
85
|
-
controller:
|
|
89
|
+
controller: addGroup
|
|
86
90
|
},
|
|
87
91
|
edit: {
|
|
88
|
-
controller:
|
|
92
|
+
controller: editGroup
|
|
89
93
|
},
|
|
90
94
|
list: {
|
|
91
95
|
fields: {
|