adminizer 4.6.0-build.202 → 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.202",
4
+ "version": "4.6.0-build.204",
5
5
  "main": "index.js",
6
6
  "exports": {
7
7
  ".": "./index.js",
@@ -10,5 +10,5 @@ export default class Router {
10
10
  */
11
11
  bind(): Promise<void>;
12
12
  unbindModelRoutes(model: string): void;
13
- bindModelRoutes(policies: MiddlewareType[], model: string): Promise<void>;
13
+ bindModelRoutes(model: string, policies?: MiddlewareType[]): Promise<void>;
14
14
  }
package/system/Router.js CHANGED
@@ -132,7 +132,7 @@ export default class Router {
132
132
  adminizer.app.get(`${adminizer.config.routePrefix}/get-timezones`, adminizer.policyManager.bindPolicies(policies, timezones));
133
133
  if (adminizer.config.models) {
134
134
  for (let model in adminizer.config.models) {
135
- await this.bindModelRoutes(policies, model);
135
+ await this.bindModelRoutes(model, policies);
136
136
  }
137
137
  }
138
138
  /**
@@ -172,7 +172,9 @@ export default class Router {
172
172
  this.modelRoutePatterns.delete(model);
173
173
  Adminizer.log.debug(`Adminpanel removed routes for model \`${model}\`: ${removedPaths.join(', ')}`);
174
174
  }
175
- async bindModelRoutes(policies, model) {
175
+ async bindModelRoutes(model, policies) {
176
+ if (!policies)
177
+ policies = this.adminizer.config.policies;
176
178
  if (this.modelRoutePatterns.has(model)) {
177
179
  this.unbindModelRoutes(model);
178
180
  }
@@ -192,7 +194,7 @@ export default class Router {
192
194
  register(`${prefix}/edit/:id`, _edit);
193
195
  register(`${prefix}/remove/:id`, _remove);
194
196
  }
195
- else if (typeof modelConfig !== "boolean") {
197
+ else if (modelConfig !== undefined && typeof modelConfig !== "boolean") {
196
198
  Adminizer.log.debug(`Adminpanel create CRUD routes for \`${model}\` by ModelConfig`);
197
199
  /**
198
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
  }