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.
- package/lib/controllers/ResourceController.d.ts +3 -1
- package/lib/controllers/ResourceController.js +12 -4
- package/lib/helpers/Permissions/PermissionFetcher.d.ts +7 -0
- package/lib/helpers/Permissions/PermissionFetcher.js +78 -0
- package/lib/helpers/Permissions/PermissionLabel.d.ts +2 -0
- package/lib/helpers/Permissions/PermissionLabel.js +42 -0
- package/lib/helpers/Permissions/PermissionMapper.d.ts +13 -0
- package/lib/helpers/Permissions/PermissionMapper.js +35 -0
- package/lib/helpers/Permissions/PermissionResource.d.ts +5 -0
- package/lib/helpers/Permissions/PermissionResource.js +31 -0
- package/lib/helpers/Permissions/PermissionSavingService.d.ts +13 -0
- package/lib/helpers/Permissions/PermissionSavingService.js +32 -0
- package/lib/helpers/Permissions/SavePermissionGroup.d.ts +6 -0
- package/lib/helpers/Permissions/SavePermissionGroup.js +32 -0
- package/lib/helpers/Permissions/UpdatePermissionGroup.d.ts +6 -0
- package/lib/helpers/Permissions/UpdatePermissionGroup.js +50 -0
- package/lib/helpers/Permissions/types.d.ts +17 -0
- package/lib/helpers/Permissions/types.js +2 -0
- package/lib/helpers/ResourceGenerator.d.ts +3 -1
- package/lib/helpers/ResourceGenerator.js +2 -1
- package/lib/helpers/SchemaGenerator.js +1 -1
- package/lib/models/ModelNames.d.ts +3 -0
- package/lib/models/ModelNames.js +3 -0
- package/lib/models/adminpermission/AdminPermission.d.ts +6 -0
- package/lib/models/adminpermission/AdminPermission.js +23 -0
- package/lib/models/adminpermission/IAdminPermission.d.ts +13 -0
- package/lib/models/adminpermission/IAdminPermission.js +2 -0
- package/lib/models/permission/IPermission.d.ts +14 -0
- package/lib/models/permission/IPermission.js +2 -0
- package/lib/models/permission/Permission.d.ts +2 -0
- package/lib/models/permission/Permission.js +21 -0
- 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
|
-
|
|
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
|
|
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,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,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,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,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,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
|
+
}
|
|
@@ -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
|
|
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 {
|
package/lib/models/ModelNames.js
CHANGED
|
@@ -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,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,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;
|