adminizer 4.6.0-build.203 → 4.6.0-build.204

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.
@@ -7,6 +7,7 @@ export declare class AccessRightsHelper {
7
7
  constructor(adminizer: Adminizer);
8
8
  registerToken(accessRightsToken: AccessRightsToken): void;
9
9
  registerTokens(accessRightsTokens: AccessRightsToken[]): void;
10
+ registerModelTokens(modelName: string, department?: string): void;
10
11
  getTokens(): AccessRightsToken[];
11
12
  getTokensByDepartment(department: string): AccessRightsToken[];
12
13
  getAllDepartments(): string[];
@@ -23,6 +23,13 @@ export class AccessRightsHelper {
23
23
  this.registerToken(token);
24
24
  }
25
25
  }
26
+ registerModelTokens(modelName, department) {
27
+ department = department ?? `Model ${modelName}`;
28
+ this.registerToken({ id: `create-${modelName}-model`, name: "Create", description: "Access to creating record in database", department });
29
+ this.registerToken({ id: `read-${modelName}-model`, name: "Read", description: "Access to reading records in database", department });
30
+ this.registerToken({ id: `update-${modelName}-model`, name: "Update", description: "Access to updating records in database", department });
31
+ this.registerToken({ id: `delete-${modelName}-model`, name: "Delete", description: "Access to deleting records in database", department });
32
+ }
26
33
  getTokens() {
27
34
  return this._tokens;
28
35
  }
@@ -54,9 +54,7 @@ export interface AdminpanelConfig {
54
54
  };
55
55
  };
56
56
  /**
57
- * @alpha
58
57
  * Models configuration
59
- * reference upload contoroller ~50 line
60
58
  * */
61
59
  models: {
62
60
  [key: string]: ModelConfig;
@@ -1,4 +1,13 @@
1
1
  import { AbstractModel } from "./AbstractModel";
2
+ /**
3
+ * Central registry (service locator) for all AbstractModel instances in the application.
4
+ * A single instance is created in Adminizer and shared across the entire app via `req.adminizer.modelHandler`.
5
+ *
6
+ * Models are registered at startup via `bindModels`, then looked up by name from controllers,
7
+ * services, helpers, and system utilities — without importing each model directly.
8
+ *
9
+ * Lookup is case-insensitive: `"UserAP"`, `"userap"`, and `"USERAP"` all resolve to the same model.
10
+ */
2
11
  export declare class ModelHandler {
3
12
  private models;
4
13
  add<T>(modelName: string, modelInstance: AbstractModel<T>): void;
@@ -1,4 +1,13 @@
1
1
  import { Adminizer } from "../Adminizer.js";
2
+ /**
3
+ * Central registry (service locator) for all AbstractModel instances in the application.
4
+ * A single instance is created in Adminizer and shared across the entire app via `req.adminizer.modelHandler`.
5
+ *
6
+ * Models are registered at startup via `bindModels`, then looked up by name from controllers,
7
+ * services, helpers, and system utilities — without importing each model directly.
8
+ *
9
+ * Lookup is case-insensitive: `"UserAP"`, `"userap"`, and `"USERAP"` all resolve to the same model.
10
+ */
2
11
  export class ModelHandler {
3
12
  models = new Map();
4
13
  add(modelName, modelInstance) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "adminizer",
3
3
  "type": "module",
4
- "version": "4.6.0-build.203",
4
+ "version": "4.6.0-build.204",
5
5
  "main": "index.js",
6
6
  "exports": {
7
7
  ".": "./index.js",
package/system/Router.js CHANGED
@@ -194,7 +194,7 @@ export default class Router {
194
194
  register(`${prefix}/edit/:id`, _edit);
195
195
  register(`${prefix}/remove/:id`, _remove);
196
196
  }
197
- else if (typeof modelConfig !== "boolean") {
197
+ else if (modelConfig !== undefined && typeof modelConfig !== "boolean") {
198
198
  Adminizer.log.debug(`Adminpanel create CRUD routes for \`${model}\` by ModelConfig`);
199
199
  /**
200
200
  * Create new record
@@ -4,28 +4,7 @@ export default async function bindAccessRights(adminizer) {
4
4
  for (let key of Object.keys(models)) {
5
5
  const model = models[key];
6
6
  if (typeof model !== "boolean") {
7
- let modelName = model.model;
8
- let department = `Model ${key}`;
9
- // create
10
- adminizer.accessRightsHelper.registerToken({
11
- id: `create-${modelName}-model`, name: "Create",
12
- description: "Access to creating record in database", department: department
13
- });
14
- // read
15
- adminizer.accessRightsHelper.registerToken({
16
- id: `read-${modelName}-model`, name: "Read",
17
- description: "Access to reading records in database", department: department
18
- });
19
- // update
20
- adminizer.accessRightsHelper.registerToken({
21
- id: `update-${modelName}-model`, name: "Update",
22
- description: "Access to updating records in database", department: department
23
- });
24
- // delete
25
- adminizer.accessRightsHelper.registerToken({
26
- id: `delete-${modelName}-model`, name: "Delete",
27
- description: "Access to deleting records in database", department: department
28
- });
7
+ adminizer.accessRightsHelper.registerModelTokens(model.model);
29
8
  }
30
9
  }
31
10
  }