identity-admin 1.28.25 → 1.28.27

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 (36) hide show
  1. package/README.md +3 -150
  2. package/lib/controllers/DashboardController.js +2 -0
  3. package/lib/controllers/PermissionController.d.ts +6 -0
  4. package/lib/controllers/PermissionController.js +52 -0
  5. package/lib/controllers/ResourceController.js +4 -2
  6. package/lib/models/adminpermission/AdminPermission.d.ts +6 -11
  7. package/lib/models/adminpermission/AdminPermission.js +17 -13
  8. package/lib/models/language/ILanguage.d.ts +8 -0
  9. package/lib/models/language/ILanguage.js +8 -0
  10. package/lib/models/language/LanguageSchema.d.ts +9 -0
  11. package/lib/models/language/LanguageSchema.js +17 -0
  12. package/lib/models/permission/Permission.d.ts +5 -1
  13. package/lib/models/permission/Permission.js +22 -15
  14. package/lib/models/permissiongroup/IPermissionGroup.d.ts +15 -0
  15. package/lib/models/permissiongroup/IPermissionGroup.js +2 -0
  16. package/lib/models/permissiongroup/PermissionGroup.d.ts +6 -0
  17. package/lib/models/permissiongroup/PermissionGroup.js +23 -0
  18. package/lib/repositories/AdminPermissionRepository.d.ts +7 -0
  19. package/lib/repositories/AdminPermissionRepository.js +23 -0
  20. package/lib/repositories/PermissionGroupRepository.d.ts +7 -0
  21. package/lib/repositories/PermissionGroupRepository.js +23 -0
  22. package/lib/repositories/PermissionRepository.d.ts +7 -0
  23. package/lib/repositories/PermissionRepository.js +23 -0
  24. package/lib/resources/AdminPermissionResource.d.ts +5 -0
  25. package/lib/resources/AdminPermissionResource.js +36 -0
  26. package/lib/resources/PermissionGroupResource.d.ts +5 -0
  27. package/lib/resources/PermissionGroupResource.js +60 -0
  28. package/lib/resources/PermissionsResource.d.ts +5 -0
  29. package/lib/resources/PermissionsResource.js +23 -0
  30. package/lib/resources/parents.d.ts +8 -0
  31. package/lib/resources/parents.js +9 -1
  32. package/lib/seeds/PermissionSeeder.d.ts +4 -0
  33. package/lib/seeds/PermissionSeeder.js +56 -0
  34. package/lib/types/IConfigurationFile.d.ts +1 -0
  35. package/lib/types/helpers.d.ts +3 -0
  36. package/package.json +1 -1
package/README.md CHANGED
@@ -143,153 +143,6 @@ Dashboard constructor to create new instance from idntity-admin.
143
143
  }
144
144
  ```
145
145
 
146
- ## Admin Notifications:
147
-
148
- `To add admin notifications in your project you should add the following`
149
-
150
- - Enable the admin notifications in the configuration file of the dashboard.
151
- > Configuration.ts
152
-
153
- ```Typescript
154
- import { IConfiguartionFile } from "identity-admin/lib/types/IConfigurationFile";
155
-
156
- export const configuration: IConfiguartionFile = {
157
- textFieldSize: 'small',
158
- defaultRowsPerPage: 50,
159
- adminNotifications: true // enable admin notifications
160
- }
161
- ```
162
-
163
- - Add these lines for the admin notification repository in the inversify container.
164
- > RepositoryTypes.ts
165
-
166
- ```Typescript
167
- IAdminNotificationRepository: Symbol.for('IAdminNotificationRepository')
168
-
169
- ```
170
-
171
- > RepositoryInversify.ts
172
-
173
- ```Typescript
174
- container.bind<IAdminNotificationRepository>(TYPES.IAdminNotificationRepository).to(AdminNotificationRepository);
175
-
176
- ```
177
-
178
- - Create new dashboard controller for the admin notifications CRUD operations and another controller for the notifications services.
179
- > AdminNotificationController.ts
180
-
181
- ```TypeScript
182
- import { controller } from "inversify-express-utils";
183
- import { defaultHeaders, isSessionAuth } from "@pbb/middlewares/isAuth";
184
- import DashboardController from "identity-admin/lib/controllers/DashboardController";
185
- import { inject } from "inversify";
186
- import TYPES from "@pbb/container/types";
187
- import AdminNotificationRepository from "identity-admin/lib/repositories/AdminNotificationRepository";
188
- import { modelConfigurations } from "@pbb/settings";
189
- import AdminNotificationsResource from "identity-admin/lib/resources/AdminNotificationsResource";
190
-
191
- @controller("/v1/admin/adminNotifications", isSessionAuth, defaultHeaders) // admin can be changed according to your base route
192
- export default class DashboardAdminNotificationController extends DashboardController {
193
- constructor(
194
- @inject(TYPES.IAdminNotificationRepository)
195
- private adminNotificationRepository: AdminNotificationRepository
196
- ) {
197
- super(
198
- AdminNotificationsResource,
199
- adminNotificationRepository,
200
- undefined,
201
- modelConfigurations
202
- );
203
- }
204
- }
205
-
206
- ```
207
-
208
- > DashboardNotifications.ts
209
-
210
- ```TypeScript
211
- import { defaultHeaders, isSessionAuth } from "@pbb/middlewares/isAuth";
212
- import { controller } from "inversify-express-utils";
213
-
214
- import NotificationController from "identity-admin/lib/controllers/AdminNotificationController";
215
-
216
- @controller("/v1/admin/notifications", isSessionAuth, defaultHeaders) // You can change the base route as your need.
217
- export default class DashboardNotificationController extends NotificationController {
218
- constructor() {
219
- super();
220
- }
221
- }
222
-
223
-
224
- ```
225
-
226
- - Import these 2 controllers in the index file of the controllers folder.
227
- > index.ts
228
-
229
- ```Typescript
230
- import './AdminNotificationController'
231
- import './DashboardNotifications';
232
- ```
233
-
234
- - Add the resource file of the admin notifications in your index file of the resources folder.
235
- > index.ts
236
-
237
- ```Typescript
238
- // other imports
239
- import AdminNotificationsResource from 'identity-admin/lib/resources/AdminNotificationsResource'
240
-
241
- ....
242
-
243
- const resources: IResourceFile[] = [
244
- // other resources
245
- ...
246
- AdminNotificationsResource,
247
- ...
248
- ];
249
- ```
250
-
251
- #### Add new notification:
252
-
253
- `To add a new notification just call the AdminNotificationCreation class as below`
254
-
255
- ```Typescript
256
-
257
- import {
258
- AdminNotificationCreation,
259
- NotificationNavigationType,
260
- } from "identity-admin/lib/helpers/AdminNotifications/AdminNotificationCreation";
261
-
262
- const record = await AdminNotificationCreation.insert({
263
- title: "Notification title",
264
- navigateTo: NotificationNavigationType.LIST,
265
- type: "Any notification type",
266
- modelName: ModelNames.User,
267
- });
268
- ```
269
-
270
- - In case you choose **NotificationNavigationType.LIST** then you should provide a model name to be navigated to
271
- - In case you choose **NotificationNavigationType.SHOW** then you should provide a model name to be navigated to and the relatedId of the record to be shown
272
- - In case you choose **NotificationNavigationType.EXTERNAL_LINK** then you should provide the external link
273
-
274
- #### The Frontend code:
275
-
276
- - Add the notification provider just before the router.
277
- > app.tsx
278
-
279
- ```tsx
280
- import { NotificationsContextProvider } from 'identity-admin-ui';
281
-
282
- <NotificationsContextProvider notificationsUrl="notifications">
283
- <Router />
284
- </NotificationsContextProvider>;
285
- ```
286
-
287
- - Add the notification icon in the dashboard header.
288
- > DashboardHeader.tsx
289
-
290
- ```tsx
291
- const showNotifications = resources?.appConfigurations?.adminNotifications;
292
-
293
- {showNotifications && <NotificationPopover />} // Add it just above the account popover
294
- <AccountPopover userType={userType} />
295
- ```
146
+ ## Plugins:
147
+ - [Permissions](./docs/permissions.md)
148
+ - [Admin Notification](./docs/adminNotifications.md)
@@ -231,6 +231,7 @@ let DashboardController = DashboardController_1 = class DashboardController {
231
231
  sort: sortQuery,
232
232
  filter,
233
233
  populate: modifiedPopulatedObject,
234
+ select: modifiedResource.listProperties
234
235
  });
235
236
  }
236
237
  else {
@@ -239,6 +240,7 @@ let DashboardController = DashboardController_1 = class DashboardController {
239
240
  filter,
240
241
  paginateParams: paginateParams,
241
242
  populate: modifiedPopulatedObject,
243
+ select: modifiedResource.listProperties
242
244
  });
243
245
  records = page.records;
244
246
  pageInfo = page.pageInfo;
@@ -0,0 +1,6 @@
1
+ import { Response } from 'express';
2
+ import { IRequest } from '../middlewares/isAuth';
3
+ export default class PermissionController {
4
+ constructor();
5
+ getAll(req: IRequest, res: Response): Promise<void>;
6
+ }
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
9
+ return function (target, key) { decorator(target, key, paramIndex); }
10
+ };
11
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
12
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
13
+ return new (P || (P = Promise))(function (resolve, reject) {
14
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
15
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
16
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
17
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
18
+ });
19
+ };
20
+ var __importDefault = (this && this.__importDefault) || function (mod) {
21
+ return (mod && mod.__esModule) ? mod : { "default": mod };
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ const inversify_express_utils_1 = require("inversify-express-utils");
25
+ const ResponseUtils_1 = __importDefault(require("../utils/ResponseUtils"));
26
+ const inversify_1 = require("inversify");
27
+ const PermissionFetcher_1 = require("../helpers/Permissions/PermissionFetcher");
28
+ const Permission_1 = __importDefault(require("../models/permission/Permission"));
29
+ const PermissionGroup_1 = require("../models/permissiongroup/PermissionGroup");
30
+ let PermissionController = class PermissionController {
31
+ constructor() { }
32
+ getAll(req, res) {
33
+ return __awaiter(this, void 0, void 0, function* () {
34
+ const permissionGroupId = req.query.id;
35
+ const permissionFetcher = new PermissionFetcher_1.PermissionFetcher(Permission_1.default, permissionGroupId);
36
+ const mappedPermissions = yield permissionFetcher.fetch();
37
+ return ResponseUtils_1.default.ok(res, {
38
+ permissions: mappedPermissions,
39
+ permissionGroup: permissionGroupId ? yield PermissionGroup_1.PermissionGroup.findById(permissionGroupId) : undefined,
40
+ });
41
+ });
42
+ }
43
+ };
44
+ __decorate([
45
+ (0, inversify_express_utils_1.httpGet)('/all'),
46
+ __param(0, (0, inversify_express_utils_1.request)()),
47
+ __param(1, (0, inversify_express_utils_1.response)())
48
+ ], PermissionController.prototype, "getAll", null);
49
+ PermissionController = __decorate([
50
+ (0, inversify_1.injectable)()
51
+ ], PermissionController);
52
+ exports.default = PermissionController;
@@ -50,6 +50,7 @@ const StringUtils_1 = __importDefault(require("../utils/StringUtils"));
50
50
  const ResourceGenerator_1 = __importDefault(require("../helpers/ResourceGenerator"));
51
51
  const inversify_1 = require("inversify");
52
52
  const PermissionResource_1 = require("../helpers/Permissions/PermissionResource");
53
+ const Permission_1 = __importDefault(require("../models/permission/Permission"));
53
54
  let ResourceController = class ResourceController {
54
55
  constructor(resourceFiles, configurations, modelConfigurations, PermissionModel) {
55
56
  this.resourceFiles = resourceFiles;
@@ -58,7 +59,7 @@ let ResourceController = class ResourceController {
58
59
  this.PermissionModel = PermissionModel;
59
60
  }
60
61
  index(req, res) {
61
- var _a, _b;
62
+ var _a, _b, _c;
62
63
  return __awaiter(this, void 0, void 0, function* () {
63
64
  var modifiedResource = {};
64
65
  modifiedResource.modelParents = {};
@@ -68,7 +69,8 @@ let ResourceController = class ResourceController {
68
69
  modifiedResource.appConfigurations.showMainActions = (_a = modifiedResource.appConfigurations.showMainActions) !== null && _a !== void 0 ? _a : true;
69
70
  modifiedResource.appConfigurations.adminNotifications = (_b = modifiedResource.appConfigurations.adminNotifications) !== null && _b !== void 0 ? _b : false;
70
71
  }
71
- const permissions = this.PermissionModel && currentUser.permissionGroupId ? yield PermissionResource_1.PermissionResource.get(currentUser.permissionGroupId, this.PermissionModel) : undefined;
72
+ const permissionsModel = this.PermissionModel ? this.PermissionModel : ((_c = this.configurations) === null || _c === void 0 ? void 0 : _c.enablePermissions) ? Permission_1.default : undefined;
73
+ const permissions = permissionsModel && currentUser.permissionGroupId ? yield PermissionResource_1.PermissionResource.get(currentUser.permissionGroupId, permissionsModel) : undefined;
72
74
  for (var i = 0; i < this.resourceFiles.length; i++) {
73
75
  const resource = this.resourceFiles[i];
74
76
  const isAllowed = resource.properties.isAllowed ? yield resource.properties.isAllowed(currentUser) : true;
@@ -1,11 +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>, {}, {}, {}, {}, import("mongoose").ResolveSchemaOptions<{
4
- timestamps: true;
5
- }>, {
6
- createdAt: NativeDate;
7
- updatedAt: NativeDate;
8
- } & {
9
- permissionId: import("mongoose").Types.ObjectId;
10
- permissionGroupId: import("mongoose").Types.ObjectId;
11
- }>;
1
+ import { Schema } from 'mongoose';
2
+ import IAdminPermissionModel from './IAdminPermission';
3
+ export declare const AdminPermissionSchema: Schema;
4
+ declare const AdminPermission: IAdminPermissionModel;
5
+ export default AdminPermission;
6
+ export declare function getAdminPermissionSchema(): Schema;
@@ -3,21 +3,25 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getAdminPermissionSchema = void 0;
6
+ exports.getAdminPermissionSchema = exports.AdminPermissionSchema = void 0;
7
7
  const mongoose_1 = require("mongoose");
8
8
  const ModelNames_1 = __importDefault(require("../ModelNames"));
9
+ exports.AdminPermissionSchema = new mongoose_1.Schema({
10
+ permissionGroupId: {
11
+ type: mongoose_1.Schema.Types.ObjectId,
12
+ ref: ModelNames_1.default.PermissionGroup,
13
+ required: true,
14
+ },
15
+ permissionId: {
16
+ type: mongoose_1.Schema.Types.ObjectId,
17
+ ref: ModelNames_1.default.Permission,
18
+ required: true,
19
+ },
20
+ }, { timestamps: true });
21
+ const AdminPermission = (mongoose_1.models[ModelNames_1.default.AdminPermission] ||
22
+ (0, mongoose_1.model)(ModelNames_1.default.AdminPermission, exports.AdminPermissionSchema));
23
+ exports.default = AdminPermission;
9
24
  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 });
25
+ return exports.AdminPermissionSchema;
22
26
  }
23
27
  exports.getAdminPermissionSchema = getAdminPermissionSchema;
@@ -0,0 +1,8 @@
1
+ export declare enum Languages {
2
+ ARABIC = "ar",
3
+ ENGLISH = "en"
4
+ }
5
+ export interface ILanguage {
6
+ key: Languages;
7
+ value?: string;
8
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Languages = void 0;
4
+ var Languages;
5
+ (function (Languages) {
6
+ Languages["ARABIC"] = "ar";
7
+ Languages["ENGLISH"] = "en";
8
+ })(Languages = exports.Languages || (exports.Languages = {}));
@@ -0,0 +1,9 @@
1
+ /// <reference types="passport-local-mongoose" />
2
+ import { Schema } from 'mongoose';
3
+ import { Languages } from './ILanguage';
4
+ export declare const LanguageSchema: Schema<any, import("mongoose").Model<any, any, any, any, any>, {}, {}, {}, {}, import("mongoose").ResolveSchemaOptions<{
5
+ _id: false;
6
+ }>, {
7
+ key?: Languages | undefined;
8
+ value?: string | undefined;
9
+ }>;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LanguageSchema = void 0;
4
+ const mongoose_1 = require("mongoose");
5
+ const ILanguage_1 = require("./ILanguage");
6
+ exports.LanguageSchema = new mongoose_1.Schema({
7
+ key: {
8
+ type: String,
9
+ enum: Object.values(ILanguage_1.Languages),
10
+ default: ILanguage_1.Languages.ENGLISH,
11
+ required: false
12
+ },
13
+ value: {
14
+ type: String,
15
+ required: false
16
+ }
17
+ }, { _id: false });
@@ -1,2 +1,6 @@
1
- import { Schema } from "mongoose";
1
+ import { Schema } from 'mongoose';
2
+ import IPermissionModel from './IPermission';
3
+ export declare const PermissionSchema: Schema;
4
+ declare const Permission: IPermissionModel;
5
+ export default Permission;
2
6
  export declare function getPermissionSchema(): Schema;
@@ -1,21 +1,28 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getPermissionSchema = void 0;
6
+ exports.getPermissionSchema = exports.PermissionSchema = void 0;
4
7
  const mongoose_1 = require("mongoose");
8
+ const ModelNames_1 = __importDefault(require("../ModelNames"));
9
+ exports.PermissionSchema = new mongoose_1.Schema({
10
+ name: {
11
+ type: String,
12
+ required: true,
13
+ },
14
+ modelName: {
15
+ type: String,
16
+ required: true,
17
+ },
18
+ order: {
19
+ type: Number,
20
+ required: true,
21
+ },
22
+ }, { timestamps: true });
23
+ const Permission = (mongoose_1.models[ModelNames_1.default.Permission] || (0, mongoose_1.model)(ModelNames_1.default.Permission, exports.PermissionSchema));
24
+ exports.default = Permission;
5
25
  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 });
26
+ return exports.PermissionSchema;
20
27
  }
21
28
  exports.getPermissionSchema = getPermissionSchema;
@@ -0,0 +1,15 @@
1
+ import { Document, Model, Types } from 'mongoose';
2
+ import { ILanguage } from '../language/ILanguage';
3
+ export interface IPermissionGroupProps {
4
+ _id?: Types.ObjectId;
5
+ name: ILanguage[] | string;
6
+ creatorId?: string;
7
+ creatorType?: string;
8
+ }
9
+ export interface IPermissionGroupDocument extends IPermissionGroupProps, Document {
10
+ _id: Types.ObjectId;
11
+ createdAt: Date;
12
+ updatedAt: Date;
13
+ }
14
+ export default interface IPermissionGroupModel extends Model<IPermissionGroupDocument> {
15
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ import IPermissionGroupModel from './IPermissionGroup';
2
+ export interface PermissionGroupOptions {
3
+ localized?: boolean;
4
+ }
5
+ export declare function createPermissionGroupModel(options?: PermissionGroupOptions): IPermissionGroupModel;
6
+ export declare const PermissionGroup: IPermissionGroupModel;
@@ -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.PermissionGroup = exports.createPermissionGroupModel = void 0;
7
+ const mongoose_1 = require("mongoose");
8
+ const ModelNames_1 = __importDefault(require("../ModelNames"));
9
+ const LanguageSchema_1 = require("../language/LanguageSchema");
10
+ function createPermissionGroupModel(options = {}) {
11
+ const nameField = options.localized ? { name: [{ type: LanguageSchema_1.LanguageSchema }] } : { name: { type: String, required: true } };
12
+ const PermissionGroupSchema = new mongoose_1.Schema(Object.assign(Object.assign({}, nameField), { creatorId: {
13
+ type: mongoose_1.Schema.Types.ObjectId,
14
+ required: false,
15
+ refPath: 'creatorType'
16
+ }, creatorType: {
17
+ type: String,
18
+ required: false
19
+ } }), { timestamps: true });
20
+ return (mongoose_1.models[ModelNames_1.default.PermissionGroup] || (0, mongoose_1.model)(ModelNames_1.default.PermissionGroup, PermissionGroupSchema));
21
+ }
22
+ exports.createPermissionGroupModel = createPermissionGroupModel;
23
+ exports.PermissionGroup = createPermissionGroupModel({ localized: false });
@@ -0,0 +1,7 @@
1
+ import Repository, { IRepository } from './Repository';
2
+ import { IAdminPermissionDocument } from '../models/adminpermission/IAdminPermission';
3
+ export interface IAdminPermissionRepository extends IRepository<IAdminPermissionDocument> {
4
+ }
5
+ export default class AdminPermissionRepository extends Repository<IAdminPermissionDocument> {
6
+ constructor();
7
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const inversify_1 = require("inversify");
13
+ const Repository_1 = __importDefault(require("./Repository"));
14
+ const AdminPermission_1 = __importDefault(require("../models/adminpermission/AdminPermission"));
15
+ let AdminPermissionRepository = class AdminPermissionRepository extends Repository_1.default {
16
+ constructor() {
17
+ super(AdminPermission_1.default);
18
+ }
19
+ };
20
+ AdminPermissionRepository = __decorate([
21
+ (0, inversify_1.injectable)()
22
+ ], AdminPermissionRepository);
23
+ exports.default = AdminPermissionRepository;
@@ -0,0 +1,7 @@
1
+ import Repository, { IRepository } from './Repository';
2
+ import { IPermissionGroupDocument } from '../models/permissiongroup/IPermissionGroup';
3
+ export interface IPermissionGroupRepository extends IRepository<IPermissionGroupDocument> {
4
+ }
5
+ export default class PermissionGroupRepository extends Repository<IPermissionGroupDocument> {
6
+ constructor();
7
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const inversify_1 = require("inversify");
13
+ const Repository_1 = __importDefault(require("./Repository"));
14
+ const PermissionGroup_1 = require("../models/permissiongroup/PermissionGroup");
15
+ let PermissionGroupRepository = class PermissionGroupRepository extends Repository_1.default {
16
+ constructor() {
17
+ super(PermissionGroup_1.PermissionGroup);
18
+ }
19
+ };
20
+ PermissionGroupRepository = __decorate([
21
+ (0, inversify_1.injectable)()
22
+ ], PermissionGroupRepository);
23
+ exports.default = PermissionGroupRepository;
@@ -0,0 +1,7 @@
1
+ import Repository, { IRepository } from './Repository';
2
+ import { IPermissionDocument } from '../models/permission/IPermission';
3
+ export interface IPermissionRepository extends IRepository<IPermissionDocument> {
4
+ }
5
+ export default class PermissionRepository extends Repository<IPermissionDocument> {
6
+ constructor();
7
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const inversify_1 = require("inversify");
13
+ const Repository_1 = __importDefault(require("./Repository"));
14
+ const Permission_1 = __importDefault(require("../models/permission/Permission"));
15
+ let PermissionRepository = class PermissionRepository extends Repository_1.default {
16
+ constructor() {
17
+ super(Permission_1.default);
18
+ }
19
+ };
20
+ PermissionRepository = __decorate([
21
+ (0, inversify_1.injectable)()
22
+ ], PermissionRepository);
23
+ exports.default = PermissionRepository;
@@ -0,0 +1,5 @@
1
+ import { IResourceFile } from '../types/IResourceFile';
2
+ import { DeepPartial } from '../types/helpers';
3
+ export declare function createAdminPermissionResource(overrides?: DeepPartial<IResourceFile>): IResourceFile;
4
+ declare const AdminPermissionResource: IResourceFile;
5
+ export default AdminPermissionResource;
@@ -0,0 +1,36 @@
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.createAdminPermissionResource = void 0;
16
+ const AdminPermission_1 = __importDefault(require("../models/adminpermission/AdminPermission"));
17
+ const parents_1 = require("./parents");
18
+ const ModelNames_1 = __importDefault(require("../models/ModelNames"));
19
+ const merge_1 = __importDefault(require("lodash/merge"));
20
+ function createAdminPermissionResource(overrides) {
21
+ return (0, merge_1.default)({
22
+ properties: {
23
+ resource: AdminPermission_1.default,
24
+ parent: parents_1.SetupParent,
25
+ modelName: ModelNames_1.default.AdminPermission,
26
+ isVisible(currentUser) {
27
+ return __awaiter(this, void 0, void 0, function* () {
28
+ return false;
29
+ });
30
+ },
31
+ },
32
+ }, overrides !== null && overrides !== void 0 ? overrides : {});
33
+ }
34
+ exports.createAdminPermissionResource = createAdminPermissionResource;
35
+ const AdminPermissionResource = createAdminPermissionResource();
36
+ exports.default = AdminPermissionResource;
@@ -0,0 +1,5 @@
1
+ import { IResourceFile } from '../types/IResourceFile';
2
+ import { DeepPartial } from '../types/helpers';
3
+ export declare function createPermissionGroupResource(overrides?: DeepPartial<IResourceFile>): IResourceFile;
4
+ declare const PermissionGroupResource: IResourceFile;
5
+ export default PermissionGroupResource;
@@ -0,0 +1,60 @@
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.createPermissionGroupResource = void 0;
16
+ const AdminPermission_1 = __importDefault(require("../models/adminpermission/AdminPermission"));
17
+ const parents_1 = require("./parents");
18
+ const ModelNames_1 = __importDefault(require("../models/ModelNames"));
19
+ const PermissionSavingService_1 = require("../helpers/Permissions/PermissionSavingService");
20
+ const merge_1 = __importDefault(require("lodash/merge"));
21
+ const PermissionGroup_1 = require("../models/permissiongroup/PermissionGroup");
22
+ function createPermissionGroupResource(overrides) {
23
+ return (0, merge_1.default)({
24
+ properties: {
25
+ resource: PermissionGroup_1.PermissionGroup,
26
+ parent: parents_1.PermissionParent,
27
+ modelName: ModelNames_1.default.PermissionGroup,
28
+ crudOperations: {
29
+ create: {
30
+ before(req, params, currentUser) {
31
+ return __awaiter(this, void 0, void 0, function* () {
32
+ params.creatorId = currentUser._id.toString();
33
+ params.creatorType = "Admin";
34
+ return params;
35
+ });
36
+ },
37
+ after(req, document, currentUser, params) {
38
+ return __awaiter(this, void 0, void 0, function* () {
39
+ const permissionSavingService = new PermissionSavingService_1.PermissionSavingService(document.getDocument()._id.toString(), params.checked, AdminPermission_1.default);
40
+ permissionSavingService.save();
41
+ return document;
42
+ });
43
+ },
44
+ },
45
+ update: {
46
+ after(req, document, params, currentUser) {
47
+ return __awaiter(this, void 0, void 0, function* () {
48
+ const permissionSavingService = new PermissionSavingService_1.PermissionSavingService(document.getDocument()._id.toString(), params.checked, AdminPermission_1.default);
49
+ permissionSavingService.update();
50
+ return document;
51
+ });
52
+ },
53
+ },
54
+ },
55
+ },
56
+ }, overrides !== null && overrides !== void 0 ? overrides : {});
57
+ }
58
+ exports.createPermissionGroupResource = createPermissionGroupResource;
59
+ const PermissionGroupResource = createPermissionGroupResource();
60
+ exports.default = PermissionGroupResource;
@@ -0,0 +1,5 @@
1
+ import { IResourceFile } from '../types/IResourceFile';
2
+ import { DeepPartial } from '../types/helpers';
3
+ export declare function createPermissionResource(overrides?: DeepPartial<IResourceFile>): IResourceFile;
4
+ declare const PermissionResource: IResourceFile;
5
+ export default PermissionResource;
@@ -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.createPermissionResource = void 0;
7
+ const Permission_1 = __importDefault(require("../models/permission/Permission"));
8
+ const parents_1 = require("./parents");
9
+ const ModelNames_1 = __importDefault(require("../models/ModelNames"));
10
+ const merge_1 = __importDefault(require("lodash/merge"));
11
+ function createPermissionResource(overrides) {
12
+ return (0, merge_1.default)({
13
+ properties: {
14
+ resource: Permission_1.default,
15
+ parent: parents_1.PermissionParent,
16
+ modelName: ModelNames_1.default.Permission,
17
+ keysTranslations: undefined,
18
+ },
19
+ }, overrides !== null && overrides !== void 0 ? overrides : {});
20
+ }
21
+ exports.createPermissionResource = createPermissionResource;
22
+ const PermissionResource = createPermissionResource();
23
+ exports.default = PermissionResource;
@@ -2,3 +2,11 @@ export declare const NotificationParent: {
2
2
  name: string;
3
3
  icon: string;
4
4
  };
5
+ export declare const PermissionParent: {
6
+ name: string;
7
+ icon: string;
8
+ };
9
+ export declare const SetupParent: {
10
+ name: string;
11
+ icon: string;
12
+ };
@@ -1,7 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NotificationParent = void 0;
3
+ exports.SetupParent = exports.PermissionParent = exports.NotificationParent = void 0;
4
4
  exports.NotificationParent = {
5
5
  name: 'Notifications',
6
6
  icon: 'NotificationsNone',
7
7
  };
8
+ exports.PermissionParent = {
9
+ name: 'Permission',
10
+ icon: 'Gavel',
11
+ };
12
+ exports.SetupParent = {
13
+ name: "Setup",
14
+ icon: "PermDataSetting",
15
+ };
@@ -0,0 +1,4 @@
1
+ import { IResourceFile } from '../types/IResourceFile';
2
+ export declare class PermissionSeeder {
3
+ static seed(resources: IResourceFile[]): Promise<void>;
4
+ }
@@ -0,0 +1,56 @@
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.PermissionSeeder = void 0;
16
+ const StringUtils_1 = __importDefault(require("../utils/StringUtils"));
17
+ const Permission_1 = __importDefault(require("../models/permission/Permission"));
18
+ class PermissionSeeder {
19
+ static seed(resources) {
20
+ return __awaiter(this, void 0, void 0, function* () {
21
+ for (var i = 0; i < resources.length; i++) {
22
+ const resource = resources[i];
23
+ const modelName = resource.properties.modelName;
24
+ const oldDocument = yield Permission_1.default.findOne({ modelName });
25
+ const isVisible = resource.properties.isVisible ? yield resource.properties.isVisible({}) : true;
26
+ if (!oldDocument && isVisible) {
27
+ const modifiedModelName = StringUtils_1.default.lowerCaseFirstLetter(modelName);
28
+ const props = [
29
+ {
30
+ name: `${modifiedModelName}_view`,
31
+ modelName,
32
+ order: 1,
33
+ },
34
+ {
35
+ name: `${modifiedModelName}_create`,
36
+ modelName,
37
+ order: 2,
38
+ },
39
+ {
40
+ name: `${modifiedModelName}_edit`,
41
+ modelName,
42
+ order: 3,
43
+ },
44
+ {
45
+ name: `${modifiedModelName}_delete`,
46
+ modelName,
47
+ order: 4,
48
+ },
49
+ ];
50
+ yield Permission_1.default.insertMany(props);
51
+ }
52
+ }
53
+ });
54
+ }
55
+ }
56
+ exports.PermissionSeeder = PermissionSeeder;
@@ -9,5 +9,6 @@ export interface IConfiguartionFile {
9
9
  baseApiUrl?: string;
10
10
  enableLocalization?: boolean;
11
11
  disableDuplicateAction?: boolean;
12
+ enablePermissions?: boolean;
12
13
  }
13
14
  export {};
@@ -66,3 +66,6 @@ export declare enum ImageOptimizingCategories {
66
66
  BANNERS = "BANNERS"
67
67
  }
68
68
  export { default as FilterHelper } from '../helpers/FiltersHelper';
69
+ export declare type DeepPartial<T> = {
70
+ [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
71
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "identity-admin",
3
- "version": "1.28.25",
3
+ "version": "1.28.27",
4
4
  "description": "",
5
5
  "main": "lib/Dashboard.js",
6
6
  "types": "lib/Dashbord.d.ts",