identity-admin 1.25.11 → 1.25.13

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.
Files changed (32) hide show
  1. package/lib/controllers/ResourceController.d.ts +3 -1
  2. package/lib/controllers/ResourceController.js +12 -4
  3. package/lib/helpers/Permissions/PermissionFetcher.d.ts +7 -0
  4. package/lib/helpers/Permissions/PermissionFetcher.js +78 -0
  5. package/lib/helpers/Permissions/PermissionLabel.d.ts +2 -0
  6. package/lib/helpers/Permissions/PermissionLabel.js +42 -0
  7. package/lib/helpers/Permissions/PermissionMapper.d.ts +13 -0
  8. package/lib/helpers/Permissions/PermissionMapper.js +35 -0
  9. package/lib/helpers/Permissions/PermissionResource.d.ts +5 -0
  10. package/lib/helpers/Permissions/PermissionResource.js +31 -0
  11. package/lib/helpers/Permissions/PermissionSavingService.d.ts +13 -0
  12. package/lib/helpers/Permissions/PermissionSavingService.js +32 -0
  13. package/lib/helpers/Permissions/SavePermissionGroup.d.ts +6 -0
  14. package/lib/helpers/Permissions/SavePermissionGroup.js +32 -0
  15. package/lib/helpers/Permissions/UpdatePermissionGroup.d.ts +6 -0
  16. package/lib/helpers/Permissions/UpdatePermissionGroup.js +50 -0
  17. package/lib/helpers/Permissions/types.d.ts +17 -0
  18. package/lib/helpers/Permissions/types.js +2 -0
  19. package/lib/helpers/ResourceGenerator.d.ts +3 -1
  20. package/lib/helpers/ResourceGenerator.js +2 -1
  21. package/lib/helpers/SchemaGenerator.js +1 -1
  22. package/lib/models/ModelNames.d.ts +3 -0
  23. package/lib/models/ModelNames.js +3 -0
  24. package/lib/models/adminpermission/AdminPermission.d.ts +6 -0
  25. package/lib/models/adminpermission/AdminPermission.js +23 -0
  26. package/lib/models/adminpermission/IAdminPermission.d.ts +13 -0
  27. package/lib/models/adminpermission/IAdminPermission.js +2 -0
  28. package/lib/models/permission/IPermission.d.ts +14 -0
  29. package/lib/models/permission/IPermission.js +2 -0
  30. package/lib/models/permission/Permission.d.ts +2 -0
  31. package/lib/models/permission/Permission.js +21 -0
  32. package/package.json +1 -1
@@ -3,11 +3,13 @@ import { IResourceFile } from "../types/IResourceFile";
3
3
  import { IRequest } from "../middlewares/isAuth";
4
4
  import { IConfiguartionFile } from "../types/IConfigurationFile";
5
5
  import { IModelConfigurationDocument } from "../models/modelConfiguration/IModelConfigurations";
6
+ import { Model } from "mongoose";
6
7
  export default class ResourceController {
7
8
  private resourceFiles;
8
9
  private configurations;
9
10
  private modelConfigurations?;
10
- constructor(resourceFiles: IResourceFile[], configurations: IConfiguartionFile | undefined, modelConfigurations?: Map<string, IModelConfigurationDocument> | undefined);
11
+ private PermissionModel?;
12
+ constructor(resourceFiles: IResourceFile[], configurations: IConfiguartionFile | undefined, modelConfigurations?: Map<string, IModelConfigurationDocument> | undefined, PermissionModel?: Model<any, any, {}, {}, any> | undefined);
11
13
  index(req: IRequest, res: Response): Promise<Response<any, Record<string, any>>>;
12
14
  getOne(req: IRequest, res: Response): Promise<Response<any, Record<string, any>>>;
13
15
  }
@@ -49,11 +49,13 @@ const ResponseUtils_1 = __importDefault(require("../utils/ResponseUtils"));
49
49
  const StringUtils_1 = __importDefault(require("../utils/StringUtils"));
50
50
  const ResourceGenerator_1 = __importDefault(require("../helpers/ResourceGenerator"));
51
51
  const inversify_1 = require("inversify");
52
+ const PermissionResource_1 = require("../helpers/Permissions/PermissionResource");
52
53
  let ResourceController = class ResourceController {
53
- constructor(resourceFiles, configurations, modelConfigurations) {
54
+ constructor(resourceFiles, configurations, modelConfigurations, PermissionModel) {
54
55
  this.resourceFiles = resourceFiles;
55
56
  this.configurations = configurations;
56
57
  this.modelConfigurations = modelConfigurations;
58
+ this.PermissionModel = PermissionModel;
57
59
  }
58
60
  index(req, res) {
59
61
  return __awaiter(this, void 0, void 0, function* () {
@@ -72,10 +74,15 @@ let ResourceController = class ResourceController {
72
74
  ? yield resource.properties.isVisible(currentUser)
73
75
  : true;
74
76
  if (isAllowed) {
75
- const adaptedResource = ResourceGenerator_1.default.generate(resource, currentUser, this.configurations, this.modelConfigurations);
77
+ const permissions = this.PermissionModel && currentUser.permissionGroupId
78
+ ? yield PermissionResource_1.PermissionResource.get(currentUser.permissionGroupId, this.PermissionModel)
79
+ : undefined;
80
+ const adaptedResource = ResourceGenerator_1.default.generate(resource, currentUser, this.configurations, this.modelConfigurations, permissions ? permissions[resource.properties.modelName] : undefined);
76
81
  const modelName = StringUtils_1.default.lowerCaseFirstLetter(adaptedResource.properties.modelName);
77
82
  modifiedResource[modelName] = adaptedResource;
78
- if (isVisibile) {
83
+ if (isVisibile &&
84
+ (!permissions ||
85
+ permissions[adaptedResource.properties.modelName][`${modelName}_view`])) {
79
86
  if (modifiedResource.modelParents[adaptedResource.properties.parent.name]) {
80
87
  modifiedResource.modelParents[adaptedResource.properties.parent.name].push(modelName);
81
88
  }
@@ -119,6 +126,7 @@ ResourceController = __decorate([
119
126
  (0, inversify_1.injectable)(),
120
127
  __param(0, (0, inversify_1.unmanaged)()),
121
128
  __param(1, (0, inversify_1.unmanaged)()),
122
- __param(2, (0, inversify_1.unmanaged)())
129
+ __param(2, (0, inversify_1.unmanaged)()),
130
+ __param(3, (0, inversify_1.unmanaged)())
123
131
  ], ResourceController);
124
132
  exports.default = ResourceController;
@@ -0,0 +1,7 @@
1
+ import { Model } from "mongoose";
2
+ export declare class PermissionFetcher {
3
+ private permissionGroupId?;
4
+ private Permission;
5
+ constructor(Permission: Model<any, any>, permissionGroupId?: string);
6
+ fetch(): Promise<import("./types").IPermissions[]>;
7
+ }
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.PermissionFetcher = void 0;
16
+ const mongoose_1 = __importDefault(require("mongoose"));
17
+ const PermissionMapper_1 = require("./PermissionMapper");
18
+ class PermissionFetcher {
19
+ constructor(Permission, permissionGroupId) {
20
+ this.permissionGroupId = permissionGroupId;
21
+ this.Permission = Permission;
22
+ }
23
+ fetch() {
24
+ return __awaiter(this, void 0, void 0, function* () {
25
+ const ObjectId = mongoose_1.default.Types.ObjectId;
26
+ const pipeline = [
27
+ {
28
+ $sort: {
29
+ modelName: 1,
30
+ },
31
+ },
32
+ {
33
+ $group: {
34
+ _id: "$modelName",
35
+ documents: { $push: "$$ROOT" },
36
+ },
37
+ },
38
+ {
39
+ $unwind: "$documents",
40
+ },
41
+ {
42
+ $sort: { order: 1 },
43
+ },
44
+ ];
45
+ if (this.permissionGroupId) {
46
+ pipeline.push({
47
+ $lookup: {
48
+ from: "adminpermissions",
49
+ localField: "documents._id",
50
+ foreignField: "permissionId",
51
+ as: "checkedPermissions",
52
+ pipeline: [
53
+ {
54
+ $match: {
55
+ permissionGroupId: new ObjectId(this.permissionGroupId),
56
+ },
57
+ },
58
+ ],
59
+ },
60
+ });
61
+ }
62
+ pipeline.push({
63
+ $group: {
64
+ _id: "$_id",
65
+ documents: { $push: "$documents" },
66
+ checkedPermissions: { $push: "$checkedPermissions" },
67
+ },
68
+ }, {
69
+ $sort: { _id: 1 },
70
+ });
71
+ const permissions = yield this.Permission.aggregate(pipeline);
72
+ const permissionMapper = new PermissionMapper_1.PermissionMapper(permissions);
73
+ const mappedPermissions = permissionMapper.map();
74
+ return mappedPermissions;
75
+ });
76
+ }
77
+ }
78
+ exports.PermissionFetcher = PermissionFetcher;
@@ -0,0 +1,2 @@
1
+ export declare function getModelLabel(modelName: string): string;
2
+ export declare function getPermissionLabel(permissionKey: string): string;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.getPermissionLabel = exports.getModelLabel = void 0;
27
+ const i18n_1 = __importStar(require("i18n"));
28
+ function getModelLabel(modelName) {
29
+ return (0, i18n_1.__)({ phrase: modelName, locale: i18n_1.default.getLocale() });
30
+ }
31
+ exports.getModelLabel = getModelLabel;
32
+ function getPermissionLabel(permissionKey) {
33
+ const translation = (0, i18n_1.__)({ phrase: permissionKey, locale: i18n_1.default.getLocale() });
34
+ if (translation === permissionKey) {
35
+ const actionKey = permissionKey.split("_")[1];
36
+ return (0, i18n_1.__)({ phrase: actionKey, locale: i18n_1.default.getLocale() });
37
+ }
38
+ else {
39
+ return translation;
40
+ }
41
+ }
42
+ exports.getPermissionLabel = getPermissionLabel;
@@ -0,0 +1,13 @@
1
+ import { IPermissions } from "./types";
2
+ import { IPermissionDocument } from "../../models/permission/IPermission";
3
+ interface IPermissionData {
4
+ _id: string;
5
+ documents: IPermissionDocument[];
6
+ checkedPermissions: any;
7
+ }
8
+ export declare class PermissionMapper {
9
+ private data;
10
+ constructor(data: IPermissionData[]);
11
+ map(): IPermissions[];
12
+ }
13
+ export {};
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PermissionMapper = void 0;
4
+ const PermissionLabel_1 = require("./PermissionLabel");
5
+ class PermissionMapper {
6
+ constructor(data) {
7
+ this.data = data;
8
+ }
9
+ map() {
10
+ const mappedData = [];
11
+ for (var i = 0; i < this.data.length; i++) {
12
+ const dataObject = this.data[i];
13
+ const modelName = dataObject._id;
14
+ const documents = dataObject.documents;
15
+ const checkedPermissions = dataObject.checkedPermissions;
16
+ const permissions = [];
17
+ documents.forEach((document, index) => {
18
+ permissions.push({
19
+ modelName,
20
+ id: document._id.toString(),
21
+ label: (0, PermissionLabel_1.getPermissionLabel)(document.name),
22
+ checked: checkedPermissions[index] && checkedPermissions[index].length !== 0 ? true : false,
23
+ key: document.name
24
+ });
25
+ });
26
+ mappedData.push({
27
+ modelName,
28
+ permissions,
29
+ label: (0, PermissionLabel_1.getModelLabel)(modelName),
30
+ });
31
+ }
32
+ return mappedData;
33
+ }
34
+ }
35
+ exports.PermissionMapper = PermissionMapper;
@@ -0,0 +1,5 @@
1
+ import { Model } from "mongoose";
2
+ import { IPermissionData } from "./types";
3
+ export declare class PermissionResource {
4
+ static get(permissionGroupId: string, PermissionModel: Model<any, any>): Promise<IPermissionData>;
5
+ }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.PermissionResource = void 0;
13
+ const PermissionFetcher_1 = require("./PermissionFetcher");
14
+ class PermissionResource {
15
+ static get(permissionGroupId, PermissionModel) {
16
+ return __awaiter(this, void 0, void 0, function* () {
17
+ const permissionFetcher = new PermissionFetcher_1.PermissionFetcher(PermissionModel, permissionGroupId);
18
+ const permissions = yield permissionFetcher.fetch();
19
+ const mappedPermissions = {};
20
+ permissions.forEach((permission) => {
21
+ mappedPermissions[permission.modelName] = {};
22
+ permission.permissions.forEach((singlePermissionData) => {
23
+ mappedPermissions[permission.modelName][singlePermissionData.key] =
24
+ singlePermissionData.checked;
25
+ });
26
+ });
27
+ return mappedPermissions;
28
+ });
29
+ }
30
+ }
31
+ exports.PermissionResource = PermissionResource;
@@ -0,0 +1,13 @@
1
+ import { Model } from "mongoose";
2
+ export declare class PermissionSavingService {
3
+ private permissionGroupId;
4
+ private permissions;
5
+ private AdminPermission;
6
+ constructor(permissionGroupId: string, permissions: {
7
+ [key: string]: {
8
+ [key: string]: boolean;
9
+ };
10
+ }, AdminPermission: Model<any, any>);
11
+ save(): Promise<void>;
12
+ update(): Promise<void>;
13
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.PermissionSavingService = void 0;
13
+ const SavePermissionGroup_1 = require("./SavePermissionGroup");
14
+ const UpdatePermissionGroup_1 = require("./UpdatePermissionGroup");
15
+ class PermissionSavingService {
16
+ constructor(permissionGroupId, permissions, AdminPermission) {
17
+ (this.AdminPermission = AdminPermission),
18
+ (this.permissionGroupId = permissionGroupId),
19
+ (this.permissions = permissions);
20
+ }
21
+ save() {
22
+ return __awaiter(this, void 0, void 0, function* () {
23
+ yield (0, SavePermissionGroup_1.savePermissionGroup)(this.permissionGroupId, this.permissions, this.AdminPermission);
24
+ });
25
+ }
26
+ update() {
27
+ return __awaiter(this, void 0, void 0, function* () {
28
+ yield (0, UpdatePermissionGroup_1.updatePermissionGroup)(this.permissionGroupId, this.permissions, this.AdminPermission);
29
+ });
30
+ }
31
+ }
32
+ exports.PermissionSavingService = PermissionSavingService;
@@ -0,0 +1,6 @@
1
+ import { Model } from "mongoose";
2
+ export declare function savePermissionGroup(permissionGroupId: string, permissions: {
3
+ [key: string]: {
4
+ [key: string]: boolean;
5
+ };
6
+ }, AdminPermission: Model<any, any>): Promise<void>;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.savePermissionGroup = void 0;
13
+ function savePermissionGroup(permissionGroupId, permissions, AdminPermission) {
14
+ return __awaiter(this, void 0, void 0, function* () {
15
+ const props = [];
16
+ for (const key in permissions) {
17
+ const data = permissions[key];
18
+ for (const permissionId in data) {
19
+ if (permissionId !== "all" &&
20
+ permissionId !== "opened" &&
21
+ data[permissionId]) {
22
+ props.push({
23
+ permissionGroupId,
24
+ permissionId,
25
+ });
26
+ }
27
+ }
28
+ }
29
+ yield AdminPermission.insertMany(props);
30
+ });
31
+ }
32
+ exports.savePermissionGroup = savePermissionGroup;
@@ -0,0 +1,6 @@
1
+ import { Model } from "mongoose";
2
+ export declare function updatePermissionGroup(permissionGroupId: string, permissions: {
3
+ [key: string]: {
4
+ [key: string]: boolean;
5
+ };
6
+ }, AdminPermission: Model<any, any>): Promise<void>;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.updatePermissionGroup = void 0;
13
+ function updatePermissionGroup(permissionGroupId, permissions, AdminPermission) {
14
+ var _a;
15
+ return __awaiter(this, void 0, void 0, function* () {
16
+ const permissionIdsMap = new Map();
17
+ const oldPermissions = yield AdminPermission.find({
18
+ permissionGroupId,
19
+ });
20
+ oldPermissions.forEach((oldPermission) => {
21
+ permissionIdsMap.set(oldPermission.permissionId.toString(), oldPermission);
22
+ });
23
+ const props = [];
24
+ for (const key in permissions) {
25
+ const data = permissions[key];
26
+ for (const permissionId in data) {
27
+ if (permissionId === "all" || permissionId === "opened") {
28
+ continue;
29
+ }
30
+ if (data[permissionId]) {
31
+ if (!permissionIdsMap.get(permissionId)) {
32
+ props.push({
33
+ permissionGroupId,
34
+ permissionId,
35
+ });
36
+ }
37
+ }
38
+ else {
39
+ if (permissionIdsMap.get(permissionId)) {
40
+ yield AdminPermission.remove({
41
+ _id: (_a = permissionIdsMap.get(permissionId)) === null || _a === void 0 ? void 0 : _a._id,
42
+ });
43
+ }
44
+ }
45
+ }
46
+ }
47
+ yield AdminPermission.insertMany(props);
48
+ });
49
+ }
50
+ exports.updatePermissionGroup = updatePermissionGroup;
@@ -0,0 +1,17 @@
1
+ export interface IPermission {
2
+ id: string;
3
+ modelName: string;
4
+ label: string;
5
+ checked: boolean;
6
+ key: string;
7
+ }
8
+ export interface IPermissions {
9
+ modelName: string;
10
+ label: string;
11
+ permissions: IPermission[];
12
+ }
13
+ export interface IPermissionData {
14
+ [modelName: string]: {
15
+ [actionKey: string]: boolean;
16
+ };
17
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -3,5 +3,7 @@ import { IResourceFile } from "../types/IResourceFile";
3
3
  import { IConfiguartionFile } from "../types/IConfigurationFile";
4
4
  import { IModelConfigurationDocument } from "../models/modelConfiguration/IModelConfigurations";
5
5
  export default class ResourceGenerator {
6
- static generate(resource: IResourceFile, currentUser: Document, configurations?: IConfiguartionFile, modelConfigurations?: Map<string, IModelConfigurationDocument>): any;
6
+ static generate(resource: IResourceFile, currentUser: Document, configurations?: IConfiguartionFile, modelConfigurations?: Map<string, IModelConfigurationDocument>, permissions?: {
7
+ [permissionKey: string]: boolean;
8
+ }): any;
7
9
  }
@@ -37,7 +37,7 @@ const SetupParent = {
37
37
  //value: __({phrase: "Setup", locale: i18n.getLocale()})
38
38
  };
39
39
  class ResourceGenerator {
40
- static generate(resource, currentUser, configurations, modelConfigurations) {
40
+ static generate(resource, currentUser, configurations, modelConfigurations, permissions) {
41
41
  var _a, _b, _c, _d, _e, _f, _g;
42
42
  const SetupParent = {
43
43
  name: "Setup",
@@ -165,6 +165,7 @@ class ResourceGenerator {
165
165
  }
166
166
  const actions = ActionsGenerator_1.default.generateActions(actionsCheck, resource, currentUser, modelConfiguration);
167
167
  modifiedResource.properties.actions = actions;
168
+ modifiedResource.permissions = permissions;
168
169
  return modifiedResource;
169
170
  }
170
171
  }
@@ -47,7 +47,7 @@ class SchemaGenerator {
47
47
  else if (schema[field].caster.options.ref) {
48
48
  populatedString = StringUtils_1.default.getPopulatedString(populatedString, field);
49
49
  model[field].path = StringUtils_1.default.lowerCaseFirstLetter(schema[field].caster.options.ref);
50
- model[field].apiRoute = 'admin/' + StringUtils_1.default.lowerCaseFirstLetter(pluralize(schema[field].caster.options.ref));
50
+ model[field].apiRoute = model[field].apiRoute ? model[field].apiRoute : 'admin/' + StringUtils_1.default.lowerCaseFirstLetter(pluralize(schema[field].caster.options.ref));
51
51
  model[field].arrayType = model[field].arrayType ? model[field].arrayType : helpers_1.FieldTypes.REFERENCE;
52
52
  }
53
53
  else {
@@ -1,4 +1,7 @@
1
1
  export default class ModelNames {
2
2
  static User: string;
3
3
  static RequestLog: string;
4
+ static Permission: string;
5
+ static PermissionGroup: string;
6
+ static AdminPermission: string;
4
7
  }
@@ -5,3 +5,6 @@ class ModelNames {
5
5
  exports.default = ModelNames;
6
6
  ModelNames.User = 'IdentityUser';
7
7
  ModelNames.RequestLog = 'RequestLog';
8
+ ModelNames.Permission = 'Permission';
9
+ ModelNames.PermissionGroup = 'PermissionGroup';
10
+ ModelNames.AdminPermission = 'AdminPermission';
@@ -0,0 +1,6 @@
1
+ /// <reference types="passport-local-mongoose" />
2
+ import { Schema } from "mongoose";
3
+ export declare function getAdminPermissionSchema(): Schema<any, import("mongoose").Model<any, any, any, any, any>, {}, {}, {}, {}, "type", {
4
+ permissionId: import("mongoose").Types.ObjectId;
5
+ permissionGroupId: import("mongoose").Types.ObjectId;
6
+ }>;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getAdminPermissionSchema = void 0;
7
+ const mongoose_1 = require("mongoose");
8
+ const ModelNames_1 = __importDefault(require("../ModelNames"));
9
+ function getAdminPermissionSchema() {
10
+ return new mongoose_1.Schema({
11
+ permissionGroupId: {
12
+ type: mongoose_1.Schema.Types.ObjectId,
13
+ ref: ModelNames_1.default.PermissionGroup,
14
+ required: true,
15
+ },
16
+ permissionId: {
17
+ type: mongoose_1.Schema.Types.ObjectId,
18
+ ref: ModelNames_1.default.Permission,
19
+ required: true,
20
+ },
21
+ }, { timestamps: true });
22
+ }
23
+ exports.getAdminPermissionSchema = getAdminPermissionSchema;
@@ -0,0 +1,13 @@
1
+ import { Document, Model, Types } from 'mongoose';
2
+ export interface IAdminPermissionProps {
3
+ _id?: Types.ObjectId;
4
+ permissionGroupId: string;
5
+ permissionId: string;
6
+ }
7
+ export interface IAdminPermissionDocument extends IAdminPermissionProps, Document {
8
+ _id: Types.ObjectId;
9
+ createdAt: Date;
10
+ updatedAt: Date;
11
+ }
12
+ export default interface IAdminPermissionModel extends Model<IAdminPermissionDocument> {
13
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,14 @@
1
+ import { Document, Model, Types } from 'mongoose';
2
+ export interface IPermissionProps {
3
+ _id?: Types.ObjectId;
4
+ name: string;
5
+ modelName: string;
6
+ order: number;
7
+ }
8
+ export interface IPermissionDocument extends IPermissionProps, Document {
9
+ _id: Types.ObjectId;
10
+ createdAt: Date;
11
+ updatedAt: Date;
12
+ }
13
+ export default interface IPermissionModel extends Model<IPermissionDocument> {
14
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ import { Schema } from "mongoose";
2
+ export declare function getPermissionSchema(): Schema;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPermissionSchema = void 0;
4
+ const mongoose_1 = require("mongoose");
5
+ function getPermissionSchema() {
6
+ return new mongoose_1.Schema({
7
+ name: {
8
+ type: String,
9
+ required: true,
10
+ },
11
+ modelName: {
12
+ type: String,
13
+ required: true,
14
+ },
15
+ order: {
16
+ type: Number,
17
+ required: true,
18
+ },
19
+ }, { timestamps: true });
20
+ }
21
+ exports.getPermissionSchema = getPermissionSchema;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "identity-admin",
3
- "version": "1.25.11",
3
+ "version": "1.25.13",
4
4
  "description": "",
5
5
  "main": "lib/Dashboard.js",
6
6
  "types": "lib/Dashbord.d.ts",