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(import.meta.dirname, "../../../../models"),
562
- path.resolve(import.meta.dirname, "../../../../src/models"),
563
- path.resolve(import.meta.dirname, "../../../models"),
564
- path.resolve(import.meta.dirname, "../../../src/models"),
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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "adminizer",
3
3
  "type": "module",
4
- "version": "4.4.0-build.147",
4
+ "version": "4.4.0-build.149",
5
5
  "main": "index.js",
6
6
  "exports": {
7
7
  ".": "./index.js",
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
- let controller = await import(addHandler.controller);
130
- adminizer.app.all(`${adminizer.config.routePrefix}/model/${model}/add`, adminizer.policyManager.bindPolicies(policies, controller.default));
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
- let controller = await import(editHandler.controller);
146
- adminizer.app.all(`${adminizer.config.routePrefix}/model/${model}/edit/:id`, adminizer.policyManager.bindPolicies(policies, controller.default));
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));
@@ -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: "../controllers/addUser.js"
44
+ controller: addUser
41
45
  },
42
46
  edit: {
43
- controller: "../controllers/editUser.js"
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: "../controllers/addGroup.js"
89
+ controller: addGroup
86
90
  },
87
91
  edit: {
88
- controller: "../controllers/editGroup.js"
92
+ controller: editGroup
89
93
  },
90
94
  list: {
91
95
  fields: {