@mbc-cqrs-serverless/directory 1.0.7
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/LICENSE.txt +7 -0
- package/README.md +42 -0
- package/dist/constant/action.d.ts +9 -0
- package/dist/constant/action.js +14 -0
- package/dist/constant/action.js.map +1 -0
- package/dist/constant/index.d.ts +1 -0
- package/dist/constant/index.js +18 -0
- package/dist/constant/index.js.map +1 -0
- package/dist/directory-file.service.d.ts +16 -0
- package/dist/directory-file.service.js +72 -0
- package/dist/directory-file.service.js.map +1 -0
- package/dist/directory.controller.d.ts +33 -0
- package/dist/directory.controller.js +203 -0
- package/dist/directory.controller.js.map +1 -0
- package/dist/directory.module-definition.d.ts +9 -0
- package/dist/directory.module-definition.js +8 -0
- package/dist/directory.module-definition.js.map +1 -0
- package/dist/directory.module.d.ts +5 -0
- package/dist/directory.module.js +55 -0
- package/dist/directory.module.js.map +1 -0
- package/dist/directory.service.d.ts +63 -0
- package/dist/directory.service.js +483 -0
- package/dist/directory.service.js.map +1 -0
- package/dist/dto/directory-attributes.dto.d.ts +48 -0
- package/dist/dto/directory-attributes.dto.js +187 -0
- package/dist/dto/directory-attributes.dto.js.map +1 -0
- package/dist/dto/directory-command.dto.d.ts +6 -0
- package/dist/dto/directory-command.dto.js +29 -0
- package/dist/dto/directory-command.dto.js.map +1 -0
- package/dist/dto/directory-copy.dto.d.ts +6 -0
- package/dist/dto/directory-copy.dto.js +33 -0
- package/dist/dto/directory-copy.dto.js.map +1 -0
- package/dist/dto/directory-create.dto.d.ts +7 -0
- package/dist/dto/directory-create.dto.js +36 -0
- package/dist/dto/directory-create.dto.js.map +1 -0
- package/dist/dto/directory-detail.dto.d.ts +4 -0
- package/dist/dto/directory-detail.dto.js +25 -0
- package/dist/dto/directory-detail.dto.js.map +1 -0
- package/dist/dto/directory-move.dto.d.ts +5 -0
- package/dist/dto/directory-move.dto.js +30 -0
- package/dist/dto/directory-move.dto.js.map +1 -0
- package/dist/dto/directory-rename.dto.d.ts +5 -0
- package/dist/dto/directory-rename.dto.js +29 -0
- package/dist/dto/directory-rename.dto.js.map +1 -0
- package/dist/dto/directory-search.dto.d.ts +6 -0
- package/dist/dto/directory-search.dto.js +32 -0
- package/dist/dto/directory-search.dto.js.map +1 -0
- package/dist/dto/directory-update.dto.d.ts +12 -0
- package/dist/dto/directory-update.dto.js +47 -0
- package/dist/dto/directory-update.dto.js.map +1 -0
- package/dist/dto/index.d.ts +11 -0
- package/dist/dto/index.js +28 -0
- package/dist/dto/index.js.map +1 -0
- package/dist/dto/upload-file.dto.d.ts +5 -0
- package/dist/dto/upload-file.dto.js +29 -0
- package/dist/dto/upload-file.dto.js.map +1 -0
- package/dist/dto/view-file.dto.d.ts +4 -0
- package/dist/dto/view-file.dto.js +27 -0
- package/dist/dto/view-file.dto.js.map +1 -0
- package/dist/dynamodb.service.d.ts +24 -0
- package/dist/dynamodb.service.js +173 -0
- package/dist/dynamodb.service.js.map +1 -0
- package/dist/entity/directory-command.entity.d.ts +6 -0
- package/dist/entity/directory-command.entity.js +12 -0
- package/dist/entity/directory-command.entity.js.map +1 -0
- package/dist/entity/directory-data-list.entity.d.ts +6 -0
- package/dist/entity/directory-data-list.entity.js +12 -0
- package/dist/entity/directory-data-list.entity.js.map +1 -0
- package/dist/entity/directory-data.entity.d.ts +6 -0
- package/dist/entity/directory-data.entity.js +12 -0
- package/dist/entity/directory-data.entity.js.map +1 -0
- package/dist/entity/dyanmo-data-list.entity.d.ts +4 -0
- package/dist/entity/dyanmo-data-list.entity.js +7 -0
- package/dist/entity/dyanmo-data-list.entity.js.map +1 -0
- package/dist/entity/index.d.ts +4 -0
- package/dist/entity/index.js +21 -0
- package/dist/entity/index.js.map +1 -0
- package/dist/entity/upload.entity.d.ts +5 -0
- package/dist/entity/upload.entity.js +7 -0
- package/dist/entity/upload.entity.js.map +1 -0
- package/dist/entity/view.entity.d.ts +3 -0
- package/dist/entity/view.entity.js +7 -0
- package/dist/entity/view.entity.js.map +1 -0
- package/dist/helpers/index.d.ts +4 -0
- package/dist/helpers/index.js +15 -0
- package/dist/helpers/index.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/package.json +49 -0
|
@@ -0,0 +1,483 @@
|
|
|
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 __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var DirectoryService_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.DirectoryService = void 0;
|
|
14
|
+
const client_s3_1 = require("@aws-sdk/client-s3");
|
|
15
|
+
const core_1 = require("@mbc-cqrs-serverless/core");
|
|
16
|
+
const core_2 = require("@mbc-cqrs-serverless/core");
|
|
17
|
+
const common_1 = require("@nestjs/common");
|
|
18
|
+
const ulid_1 = require("ulid");
|
|
19
|
+
const directory_attributes_dto_1 = require("./dto/directory-attributes.dto");
|
|
20
|
+
const directory_command_dto_1 = require("./dto/directory-command.dto");
|
|
21
|
+
const dynamodb_service_1 = require("./dynamodb.service");
|
|
22
|
+
const directory_data_entity_1 = require("./entity/directory-data.entity");
|
|
23
|
+
const directory_data_list_entity_1 = require("./entity/directory-data-list.entity");
|
|
24
|
+
const helpers_1 = require("./helpers");
|
|
25
|
+
let DirectoryService = DirectoryService_1 = class DirectoryService {
|
|
26
|
+
constructor(commandService, dataService, s3Service, customDynamoService) {
|
|
27
|
+
this.commandService = commandService;
|
|
28
|
+
this.dataService = dataService;
|
|
29
|
+
this.s3Service = s3Service;
|
|
30
|
+
this.customDynamoService = customDynamoService;
|
|
31
|
+
this.logger = new common_1.Logger(DirectoryService_1.name);
|
|
32
|
+
}
|
|
33
|
+
async create(createDto, opts) {
|
|
34
|
+
const { tenantCode } = (0, core_1.getUserContext)(opts.invokeContext);
|
|
35
|
+
const pk = `DIRECTORY${core_2.KEY_SEPARATOR}${tenantCode}`;
|
|
36
|
+
const sk = (0, ulid_1.ulid)();
|
|
37
|
+
const attrs = createDto.attributes;
|
|
38
|
+
const parentId = attrs.parentId;
|
|
39
|
+
const ancestors = attrs.ancestors;
|
|
40
|
+
const isRoot = !parentId && ancestors.length === 0;
|
|
41
|
+
let newAncestors = [];
|
|
42
|
+
if (!isRoot) {
|
|
43
|
+
const parenDto = { pk, sk: parentId };
|
|
44
|
+
const allowPermissions = [
|
|
45
|
+
directory_attributes_dto_1.FileRole.WRITE,
|
|
46
|
+
directory_attributes_dto_1.FileRole.CHANGE_PERMISSION,
|
|
47
|
+
directory_attributes_dto_1.FileRole.TAKE_OWNERSHIP,
|
|
48
|
+
];
|
|
49
|
+
const user = { email: attrs.owner.email, tenant: tenantCode };
|
|
50
|
+
const canWrite = await this.hasPermission(parenDto, allowPermissions, user);
|
|
51
|
+
if (!canWrite) {
|
|
52
|
+
throw new common_1.ForbiddenException('You do not have permission to create items in this folder.');
|
|
53
|
+
}
|
|
54
|
+
const parentAttrs = await this.getItemAttributes(parenDto);
|
|
55
|
+
const parentAncestors = parentAttrs.ancestors || [];
|
|
56
|
+
newAncestors = [...parentAncestors, parentId];
|
|
57
|
+
}
|
|
58
|
+
const directory = new directory_command_dto_1.DirectoryCommandDto({
|
|
59
|
+
pk,
|
|
60
|
+
sk,
|
|
61
|
+
id: (0, core_1.generateId)(pk, sk),
|
|
62
|
+
tenantCode,
|
|
63
|
+
code: sk,
|
|
64
|
+
type: createDto.type,
|
|
65
|
+
version: core_1.VERSION_FIRST,
|
|
66
|
+
name: createDto.name,
|
|
67
|
+
attributes: { ...createDto.attributes, ancestors: newAncestors },
|
|
68
|
+
});
|
|
69
|
+
const item = await this.commandService.publishAsync(directory, opts);
|
|
70
|
+
return new directory_data_entity_1.DirectoryDataEntity(item);
|
|
71
|
+
}
|
|
72
|
+
async copy(detailDto, copyDto, opts) {
|
|
73
|
+
const userContext = (0, core_1.getUserContext)(opts.invokeContext);
|
|
74
|
+
const { tenantCode, userId } = userContext;
|
|
75
|
+
const { path, email, parentId } = copyDto;
|
|
76
|
+
const data = (await this.dataService.getItem(detailDto));
|
|
77
|
+
if (!data) {
|
|
78
|
+
throw new common_1.NotFoundException('Directory not found!');
|
|
79
|
+
}
|
|
80
|
+
const pk = `DIRECTORY${core_2.KEY_SEPARATOR}${tenantCode}`;
|
|
81
|
+
const sk = (0, ulid_1.ulid)();
|
|
82
|
+
const attrs = data.attributes;
|
|
83
|
+
let newAncestors = [];
|
|
84
|
+
if (parentId) {
|
|
85
|
+
const parenDto = { pk, sk: parentId };
|
|
86
|
+
const parentAttrs = await this.getItemAttributes(parenDto);
|
|
87
|
+
const parentAncestors = parentAttrs.ancestors || [];
|
|
88
|
+
newAncestors = [...parentAncestors, parentId];
|
|
89
|
+
}
|
|
90
|
+
const oldKey = data.attributes.s3Key;
|
|
91
|
+
const s3Key = `${path}/${data.name}`;
|
|
92
|
+
await this.s3Service.client.send(new client_s3_1.CopyObjectCommand({
|
|
93
|
+
Bucket: this.s3Service.privateBucket,
|
|
94
|
+
CopySource: encodeURIComponent(`${this.s3Service.privateBucket}/${oldKey}`),
|
|
95
|
+
Key: s3Key,
|
|
96
|
+
}));
|
|
97
|
+
const directory = new directory_command_dto_1.DirectoryCommandDto({
|
|
98
|
+
pk,
|
|
99
|
+
sk,
|
|
100
|
+
id: (0, core_1.generateId)(pk, sk),
|
|
101
|
+
tenantCode,
|
|
102
|
+
code: sk,
|
|
103
|
+
type: data.type,
|
|
104
|
+
version: core_1.VERSION_FIRST,
|
|
105
|
+
name: data.name,
|
|
106
|
+
attributes: {
|
|
107
|
+
...attrs,
|
|
108
|
+
s3Key: s3Key,
|
|
109
|
+
ancestors: newAncestors,
|
|
110
|
+
parentId: parentId,
|
|
111
|
+
owner: { email: email, ownerId: userId },
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
const item = await this.commandService.publishAsync(directory, opts);
|
|
115
|
+
return new directory_data_entity_1.DirectoryDataEntity(item);
|
|
116
|
+
}
|
|
117
|
+
async move(detailDto, copyDto, opts) {
|
|
118
|
+
const userContext = (0, core_1.getUserContext)(opts.invokeContext);
|
|
119
|
+
const { tenantCode } = userContext;
|
|
120
|
+
const { parentId } = copyDto;
|
|
121
|
+
const data = (await this.dataService.getItem(detailDto));
|
|
122
|
+
if (!data) {
|
|
123
|
+
throw new common_1.NotFoundException('Directory not found!');
|
|
124
|
+
}
|
|
125
|
+
const allowPermissions = [
|
|
126
|
+
directory_attributes_dto_1.FileRole.WRITE,
|
|
127
|
+
directory_attributes_dto_1.FileRole.CHANGE_PERMISSION,
|
|
128
|
+
directory_attributes_dto_1.FileRole.TAKE_OWNERSHIP,
|
|
129
|
+
];
|
|
130
|
+
const itemDto = { pk: data.pk, sk: data.sk };
|
|
131
|
+
const user = { email: copyDto.email, tenant: tenantCode };
|
|
132
|
+
const canModify = await this.hasPermission(itemDto, allowPermissions, user);
|
|
133
|
+
if (!canModify) {
|
|
134
|
+
throw new common_1.ForbiddenException('You do not have permission to modify this item.');
|
|
135
|
+
}
|
|
136
|
+
const pk = `DIRECTORY${core_2.KEY_SEPARATOR}${tenantCode}`;
|
|
137
|
+
const sk = (0, ulid_1.ulid)();
|
|
138
|
+
const attrs = data.attributes;
|
|
139
|
+
let newAncestors = [];
|
|
140
|
+
if (parentId) {
|
|
141
|
+
const parenDto = { pk, sk: parentId };
|
|
142
|
+
const parentAttrs = await this.getItemAttributes(parenDto);
|
|
143
|
+
const parentAncestors = parentAttrs.ancestors || [];
|
|
144
|
+
newAncestors = [...parentAncestors, parentId];
|
|
145
|
+
}
|
|
146
|
+
if (newAncestors.includes(data.sk)) {
|
|
147
|
+
throw new common_1.BadRequestException('Cannot move a folder into one of its subfolders.');
|
|
148
|
+
}
|
|
149
|
+
const directory = new directory_command_dto_1.DirectoryCommandDto({
|
|
150
|
+
pk,
|
|
151
|
+
sk,
|
|
152
|
+
id: (0, core_1.generateId)(pk, sk),
|
|
153
|
+
tenantCode,
|
|
154
|
+
code: sk,
|
|
155
|
+
type: data.type,
|
|
156
|
+
version: core_1.VERSION_FIRST,
|
|
157
|
+
name: data.name,
|
|
158
|
+
attributes: { ...attrs, ancestors: newAncestors, parentId: parentId },
|
|
159
|
+
});
|
|
160
|
+
const item = await this.commandService.publishAsync(directory, opts);
|
|
161
|
+
return new directory_data_entity_1.DirectoryDataEntity(item);
|
|
162
|
+
}
|
|
163
|
+
async getItemAttributes(detailDto) {
|
|
164
|
+
const item = await this.dataService.getItem(detailDto);
|
|
165
|
+
if (!item) {
|
|
166
|
+
throw new common_1.NotFoundException('Directory not found!');
|
|
167
|
+
}
|
|
168
|
+
this.logger.debug('item:', item);
|
|
169
|
+
return item.attributes;
|
|
170
|
+
}
|
|
171
|
+
async getItem(detailDto) {
|
|
172
|
+
const item = await this.dataService.getItem(detailDto);
|
|
173
|
+
if (!item) {
|
|
174
|
+
throw new common_1.NotFoundException('Directory not found!');
|
|
175
|
+
}
|
|
176
|
+
this.logger.debug('item:', item);
|
|
177
|
+
return item;
|
|
178
|
+
}
|
|
179
|
+
async hasPermission(itemId, requiredRole, user) {
|
|
180
|
+
const effectiveRole = await this.getEffectiveRole(itemId, user);
|
|
181
|
+
if (!effectiveRole) {
|
|
182
|
+
return false; // No permission found
|
|
183
|
+
}
|
|
184
|
+
return requiredRole.includes(effectiveRole);
|
|
185
|
+
}
|
|
186
|
+
async getEffectiveRole(itemId, user) {
|
|
187
|
+
let attributes;
|
|
188
|
+
let item;
|
|
189
|
+
try {
|
|
190
|
+
item = await this.getItem(itemId);
|
|
191
|
+
attributes = item.attributes;
|
|
192
|
+
}
|
|
193
|
+
catch (e) {
|
|
194
|
+
return null;
|
|
195
|
+
}
|
|
196
|
+
const { permission, parentId, inheritance, expirationTime } = attributes;
|
|
197
|
+
if (permission) {
|
|
198
|
+
const now = Date.now();
|
|
199
|
+
const expirationDate = new Date(expirationTime);
|
|
200
|
+
const expirationTimestamp = expirationDate.getTime();
|
|
201
|
+
const isExpired = expirationTimestamp <= now;
|
|
202
|
+
if (isExpired) {
|
|
203
|
+
return null;
|
|
204
|
+
}
|
|
205
|
+
const role = this.checkPermissionObject(permission, item.tenantCode, user);
|
|
206
|
+
if (role) {
|
|
207
|
+
return role;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
if (inheritance === false) {
|
|
211
|
+
return null;
|
|
212
|
+
}
|
|
213
|
+
if (!parentId) {
|
|
214
|
+
return null;
|
|
215
|
+
}
|
|
216
|
+
const parentDto = { pk: itemId.pk, sk: parentId };
|
|
217
|
+
return this.getEffectiveRole(parentDto, user);
|
|
218
|
+
}
|
|
219
|
+
checkPermissionObject(permission, tenantCode, user) {
|
|
220
|
+
switch (permission.type) {
|
|
221
|
+
case directory_attributes_dto_1.FilePermission.GENERAL:
|
|
222
|
+
return permission.role;
|
|
223
|
+
case directory_attributes_dto_1.FilePermission.DOMAIN:
|
|
224
|
+
const requiredDomain = permission.domain?.email;
|
|
225
|
+
const userDomain = user.email.split('@')[1];
|
|
226
|
+
if (requiredDomain && userDomain === requiredDomain) {
|
|
227
|
+
return permission.role;
|
|
228
|
+
}
|
|
229
|
+
break;
|
|
230
|
+
case directory_attributes_dto_1.FilePermission.RESTRICTED:
|
|
231
|
+
const permUser = permission.users.find((item) => item.email === user.email);
|
|
232
|
+
if (permUser) {
|
|
233
|
+
return permUser.role;
|
|
234
|
+
}
|
|
235
|
+
break;
|
|
236
|
+
case directory_attributes_dto_1.FilePermission.TENANT:
|
|
237
|
+
if (tenantCode === user.tenant) {
|
|
238
|
+
return permission.role;
|
|
239
|
+
}
|
|
240
|
+
break;
|
|
241
|
+
}
|
|
242
|
+
return null;
|
|
243
|
+
}
|
|
244
|
+
async findOne(detailDto, opts, queryDto) {
|
|
245
|
+
const userContext = (0, core_1.getUserContext)(opts.invokeContext);
|
|
246
|
+
const { tenantCode: tenant } = userContext;
|
|
247
|
+
const { email } = queryDto;
|
|
248
|
+
const allowPermissions = [
|
|
249
|
+
directory_attributes_dto_1.FileRole.READ,
|
|
250
|
+
directory_attributes_dto_1.FileRole.WRITE,
|
|
251
|
+
directory_attributes_dto_1.FileRole.CHANGE_PERMISSION,
|
|
252
|
+
directory_attributes_dto_1.FileRole.TAKE_OWNERSHIP,
|
|
253
|
+
];
|
|
254
|
+
const user = { email: email, tenant: tenant };
|
|
255
|
+
const canRead = await this.hasPermission(detailDto, allowPermissions, user);
|
|
256
|
+
if (!canRead) {
|
|
257
|
+
throw new common_1.ForbiddenException('You do not have permission to read this item.');
|
|
258
|
+
}
|
|
259
|
+
const item = await this.dataService.getItem(detailDto);
|
|
260
|
+
if (!item) {
|
|
261
|
+
throw new common_1.NotFoundException('Directory not found!');
|
|
262
|
+
}
|
|
263
|
+
this.logger.debug('item:', item);
|
|
264
|
+
return new directory_data_entity_1.DirectoryDataEntity(item);
|
|
265
|
+
}
|
|
266
|
+
async findHistory(detailDto, opts, queryDto) {
|
|
267
|
+
const userContext = (0, core_1.getUserContext)(opts.invokeContext);
|
|
268
|
+
const { tenantCode: tenant } = userContext;
|
|
269
|
+
const { email } = queryDto;
|
|
270
|
+
const allowPermissions = [
|
|
271
|
+
directory_attributes_dto_1.FileRole.READ,
|
|
272
|
+
directory_attributes_dto_1.FileRole.WRITE,
|
|
273
|
+
directory_attributes_dto_1.FileRole.CHANGE_PERMISSION,
|
|
274
|
+
directory_attributes_dto_1.FileRole.TAKE_OWNERSHIP,
|
|
275
|
+
];
|
|
276
|
+
const user = { email: email, tenant: tenant };
|
|
277
|
+
const canRead = await this.hasPermission(detailDto, allowPermissions, user);
|
|
278
|
+
if (!canRead) {
|
|
279
|
+
throw new common_1.ForbiddenException('You do not have permission to read this item.');
|
|
280
|
+
}
|
|
281
|
+
const item = await this.dataService.getItem(detailDto);
|
|
282
|
+
if (!item) {
|
|
283
|
+
throw new common_1.NotFoundException('Directory not found!');
|
|
284
|
+
}
|
|
285
|
+
this.logger.debug('item:', item);
|
|
286
|
+
const query = {
|
|
287
|
+
skExpession: 'begins_with(sk, :typeCode)',
|
|
288
|
+
skAttributeValues: { ':typeCode': `${item.code}${core_1.VER_SEPARATOR}` },
|
|
289
|
+
};
|
|
290
|
+
const table = `${process.env.NODE_ENV}-${process.env.APP_NAME}-directory-history`;
|
|
291
|
+
const directoryHistories = await this.customDynamoService.listItemsByPk(table, item.pk, query);
|
|
292
|
+
const directoryHistory = directoryHistories.items?.sort((a, b) => b.version - a.version);
|
|
293
|
+
const result = [item, ...directoryHistory];
|
|
294
|
+
return new directory_data_list_entity_1.DirectoryDataListEntity({
|
|
295
|
+
total: result.length,
|
|
296
|
+
items: result.map((item) => new directory_data_entity_1.DirectoryDataEntity(item)),
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
async restoreHistoryItem(detailDto, version, queryDto, opts) {
|
|
300
|
+
const item = await this.commandService.getItem({
|
|
301
|
+
pk: detailDto.pk,
|
|
302
|
+
sk: `${detailDto.sk}${core_1.VER_SEPARATOR}${version}`,
|
|
303
|
+
});
|
|
304
|
+
if (!item) {
|
|
305
|
+
throw new common_1.NotFoundException();
|
|
306
|
+
}
|
|
307
|
+
const latestItem = await this.dataService.getItem(detailDto);
|
|
308
|
+
const userContext = (0, core_1.getUserContext)(opts.invokeContext);
|
|
309
|
+
const { tenantCode: tenant } = userContext;
|
|
310
|
+
const { email } = queryDto;
|
|
311
|
+
const allowPermissions = [
|
|
312
|
+
directory_attributes_dto_1.FileRole.WRITE,
|
|
313
|
+
directory_attributes_dto_1.FileRole.CHANGE_PERMISSION,
|
|
314
|
+
directory_attributes_dto_1.FileRole.TAKE_OWNERSHIP,
|
|
315
|
+
];
|
|
316
|
+
const user = { email: email, tenant: tenant };
|
|
317
|
+
const canWrite = await this.hasPermission(detailDto, allowPermissions, user);
|
|
318
|
+
if (!canWrite) {
|
|
319
|
+
throw new common_1.ForbiddenException('You do not have permission to write this item.');
|
|
320
|
+
}
|
|
321
|
+
const cmdDto = {
|
|
322
|
+
pk: detailDto.pk,
|
|
323
|
+
sk: detailDto.sk,
|
|
324
|
+
version: latestItem.version,
|
|
325
|
+
name: item.name,
|
|
326
|
+
id: item.id,
|
|
327
|
+
tenantCode: item.tenantCode,
|
|
328
|
+
code: item.code,
|
|
329
|
+
type: item.type,
|
|
330
|
+
attributes: {
|
|
331
|
+
...item.attributes,
|
|
332
|
+
owner: {
|
|
333
|
+
email: item.attributes.owner.email,
|
|
334
|
+
ownerId: item.attributes.owner.ownerId,
|
|
335
|
+
},
|
|
336
|
+
},
|
|
337
|
+
};
|
|
338
|
+
const command = await this.commandService.publishAsync(cmdDto, opts);
|
|
339
|
+
return new directory_data_entity_1.DirectoryDataEntity(command);
|
|
340
|
+
}
|
|
341
|
+
async restoreTemporary(detailDto, queryDto, opts) {
|
|
342
|
+
const data = (await this.dataService.getItem(detailDto));
|
|
343
|
+
if (!data) {
|
|
344
|
+
throw new common_1.NotFoundException('Directory not found!');
|
|
345
|
+
}
|
|
346
|
+
if (!data.isDeleted) {
|
|
347
|
+
throw new common_1.BadRequestException('Directory is not deleted!');
|
|
348
|
+
}
|
|
349
|
+
const userContext = (0, core_1.getUserContext)(opts.invokeContext);
|
|
350
|
+
const { tenantCode: tenant } = userContext;
|
|
351
|
+
const { email } = queryDto;
|
|
352
|
+
const allowPermissions = [
|
|
353
|
+
directory_attributes_dto_1.FileRole.WRITE,
|
|
354
|
+
directory_attributes_dto_1.FileRole.CHANGE_PERMISSION,
|
|
355
|
+
directory_attributes_dto_1.FileRole.TAKE_OWNERSHIP,
|
|
356
|
+
];
|
|
357
|
+
const user = {
|
|
358
|
+
email: email,
|
|
359
|
+
tenant: tenant,
|
|
360
|
+
};
|
|
361
|
+
const canWrite = await this.hasPermission(detailDto, allowPermissions, user);
|
|
362
|
+
if (!canWrite) {
|
|
363
|
+
throw new common_1.ForbiddenException('You do not have permission to write this item.');
|
|
364
|
+
}
|
|
365
|
+
const cmdDto = new directory_command_dto_1.DirectoryCommandDto({
|
|
366
|
+
pk: data.pk,
|
|
367
|
+
sk: data.sk,
|
|
368
|
+
version: data.version,
|
|
369
|
+
name: data.name,
|
|
370
|
+
isDeleted: false,
|
|
371
|
+
attributes: {
|
|
372
|
+
...data.attributes,
|
|
373
|
+
},
|
|
374
|
+
code: data.code,
|
|
375
|
+
tenantCode: data.tenantCode,
|
|
376
|
+
type: data.type,
|
|
377
|
+
});
|
|
378
|
+
const item = await this.commandService.publishPartialUpdateAsync(cmdDto, opts);
|
|
379
|
+
return new directory_data_entity_1.DirectoryDataEntity(item);
|
|
380
|
+
}
|
|
381
|
+
async update(detailDto, updateDto, opts) {
|
|
382
|
+
const userContext = (0, core_1.getUserContext)(opts.invokeContext);
|
|
383
|
+
const { tenantCode: tenant } = userContext;
|
|
384
|
+
const { tenantCode } = (0, helpers_1.parsePk)(detailDto.pk);
|
|
385
|
+
if (userContext.tenantCode !== tenantCode) {
|
|
386
|
+
throw new common_1.BadRequestException('Invalid tenant code');
|
|
387
|
+
}
|
|
388
|
+
const data = (await this.dataService.getItem(detailDto));
|
|
389
|
+
if (!data) {
|
|
390
|
+
throw new common_1.NotFoundException('Directory not found!');
|
|
391
|
+
}
|
|
392
|
+
const allowPermissions = [
|
|
393
|
+
directory_attributes_dto_1.FileRole.CHANGE_PERMISSION,
|
|
394
|
+
directory_attributes_dto_1.FileRole.TAKE_OWNERSHIP,
|
|
395
|
+
];
|
|
396
|
+
if (!updateDto.attributes?.permission) {
|
|
397
|
+
allowPermissions.push(directory_attributes_dto_1.FileRole.WRITE);
|
|
398
|
+
}
|
|
399
|
+
const itemDto = { pk: data.pk, sk: data.sk };
|
|
400
|
+
const attrs = updateDto.attributes;
|
|
401
|
+
const user = { email: updateDto.email, tenant: tenant };
|
|
402
|
+
const canModify = await this.hasPermission(itemDto, allowPermissions, user);
|
|
403
|
+
if (!canModify) {
|
|
404
|
+
throw new common_1.ForbiddenException('You do not have permission to modify this item.');
|
|
405
|
+
}
|
|
406
|
+
if (attrs && attrs.parentId !== data.attributes.parentId) {
|
|
407
|
+
throw new common_1.BadRequestException('Cannot change parentId with this API. Please use the /move endpoint.');
|
|
408
|
+
}
|
|
409
|
+
const commandDto = new directory_command_dto_1.DirectoryCommandDto({
|
|
410
|
+
pk: data.pk,
|
|
411
|
+
sk: data.sk,
|
|
412
|
+
version: data.version,
|
|
413
|
+
name: updateDto.name ?? data.name,
|
|
414
|
+
isDeleted: updateDto.isDeleted ?? data.isDeleted,
|
|
415
|
+
attributes: { ...data.attributes, ...attrs },
|
|
416
|
+
});
|
|
417
|
+
const item = await this.commandService.publishPartialUpdateAsync(commandDto, opts);
|
|
418
|
+
return new directory_data_entity_1.DirectoryDataEntity(item);
|
|
419
|
+
}
|
|
420
|
+
async rename(detailDto, updateDto, opts) {
|
|
421
|
+
const { tenantCode: tenant } = (0, core_1.getUserContext)(opts.invokeContext);
|
|
422
|
+
const data = (await this.dataService.getItem(detailDto));
|
|
423
|
+
if (!data) {
|
|
424
|
+
throw new common_1.NotFoundException('Directory not found!');
|
|
425
|
+
}
|
|
426
|
+
const allowPermissions = [
|
|
427
|
+
directory_attributes_dto_1.FileRole.WRITE,
|
|
428
|
+
directory_attributes_dto_1.FileRole.CHANGE_PERMISSION,
|
|
429
|
+
directory_attributes_dto_1.FileRole.TAKE_OWNERSHIP,
|
|
430
|
+
];
|
|
431
|
+
const itemDto = { pk: data.pk, sk: data.sk };
|
|
432
|
+
const user = { email: updateDto.email, tenant: tenant };
|
|
433
|
+
const canModify = await this.hasPermission(itemDto, allowPermissions, user);
|
|
434
|
+
if (!canModify) {
|
|
435
|
+
throw new common_1.ForbiddenException('You do not have permission to modify this item.');
|
|
436
|
+
}
|
|
437
|
+
const commandDto = new directory_command_dto_1.DirectoryCommandDto({
|
|
438
|
+
pk: data.pk,
|
|
439
|
+
sk: data.sk,
|
|
440
|
+
version: data.version,
|
|
441
|
+
name: updateDto.name ?? data.name,
|
|
442
|
+
attributes: { ...data.attributes },
|
|
443
|
+
});
|
|
444
|
+
const item = await this.commandService.publishPartialUpdateAsync(commandDto, opts);
|
|
445
|
+
return new directory_data_entity_1.DirectoryDataEntity(item);
|
|
446
|
+
}
|
|
447
|
+
async remove(key, opts, queryDto) {
|
|
448
|
+
const userContext = (0, core_1.getUserContext)(opts.invokeContext);
|
|
449
|
+
const { tenantCode: tenant } = userContext;
|
|
450
|
+
const { tenantCode } = (0, helpers_1.parsePk)(key.pk);
|
|
451
|
+
if (userContext.tenantCode !== tenantCode) {
|
|
452
|
+
throw new common_1.BadRequestException('Invalid tenant code');
|
|
453
|
+
}
|
|
454
|
+
const data = (await this.dataService.getItem(key));
|
|
455
|
+
if (!data) {
|
|
456
|
+
throw new common_1.NotFoundException();
|
|
457
|
+
}
|
|
458
|
+
const allowPermissions = [directory_attributes_dto_1.FileRole.DELETE, directory_attributes_dto_1.FileRole.TAKE_OWNERSHIP];
|
|
459
|
+
const itemDto = { pk: data.pk, sk: data.sk };
|
|
460
|
+
const user = { email: queryDto.email, tenant: tenant };
|
|
461
|
+
const canModify = await this.hasPermission(itemDto, allowPermissions, user);
|
|
462
|
+
if (!canModify) {
|
|
463
|
+
throw new common_1.ForbiddenException('You do not have permission to modify this item.');
|
|
464
|
+
}
|
|
465
|
+
const commandDto = {
|
|
466
|
+
pk: data.pk,
|
|
467
|
+
sk: data.sk,
|
|
468
|
+
version: data.version,
|
|
469
|
+
isDeleted: true,
|
|
470
|
+
};
|
|
471
|
+
const item = await this.commandService.publishPartialUpdateAsync(commandDto, opts);
|
|
472
|
+
return new directory_data_entity_1.DirectoryDataEntity(item);
|
|
473
|
+
}
|
|
474
|
+
};
|
|
475
|
+
exports.DirectoryService = DirectoryService;
|
|
476
|
+
exports.DirectoryService = DirectoryService = DirectoryService_1 = __decorate([
|
|
477
|
+
(0, common_1.Injectable)(),
|
|
478
|
+
__metadata("design:paramtypes", [core_1.CommandService,
|
|
479
|
+
core_1.DataService,
|
|
480
|
+
core_1.S3Service,
|
|
481
|
+
dynamodb_service_1.DynamoService])
|
|
482
|
+
], DirectoryService);
|
|
483
|
+
//# sourceMappingURL=directory.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directory.service.js","sourceRoot":"","sources":["../src/directory.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export declare enum FileRole {
|
|
2
|
+
READ = "READ",
|
|
3
|
+
WRITE = "WRITE",
|
|
4
|
+
DELETE = "DELETE",
|
|
5
|
+
CHANGE_PERMISSION = "CHANGE_PERMISSION",
|
|
6
|
+
TAKE_OWNERSHIP = "TAKE_OWNERSHIP"
|
|
7
|
+
}
|
|
8
|
+
export declare enum FilePermission {
|
|
9
|
+
GENERAL = "GENERAL",
|
|
10
|
+
RESTRICTED = "RESTRICTED",
|
|
11
|
+
DOMAIN = "DOMAIN",
|
|
12
|
+
TENANT = "TENANT"
|
|
13
|
+
}
|
|
14
|
+
export declare enum EmailType {
|
|
15
|
+
EMAIL = "EMAIL",
|
|
16
|
+
EMAIL_GROUP = "EMAIL_GROUP"
|
|
17
|
+
}
|
|
18
|
+
export declare class DomainDto {
|
|
19
|
+
email: string;
|
|
20
|
+
}
|
|
21
|
+
export declare class OwnerDto {
|
|
22
|
+
email: string;
|
|
23
|
+
ownerId: string;
|
|
24
|
+
}
|
|
25
|
+
export declare class UserPermissionDto {
|
|
26
|
+
email: string;
|
|
27
|
+
role: FileRole;
|
|
28
|
+
id: string;
|
|
29
|
+
type: EmailType;
|
|
30
|
+
}
|
|
31
|
+
export declare class PermissionDto {
|
|
32
|
+
type: FilePermission;
|
|
33
|
+
role: FileRole;
|
|
34
|
+
domain?: DomainDto;
|
|
35
|
+
users?: UserPermissionDto[];
|
|
36
|
+
}
|
|
37
|
+
export declare class DirectoryAttributes {
|
|
38
|
+
expirationTime?: string;
|
|
39
|
+
fileSize?: number;
|
|
40
|
+
fileType?: string;
|
|
41
|
+
parentId?: string;
|
|
42
|
+
owner: OwnerDto;
|
|
43
|
+
s3Key?: string;
|
|
44
|
+
ancestors?: string[];
|
|
45
|
+
inheritance?: boolean;
|
|
46
|
+
tags?: string[];
|
|
47
|
+
permission?: PermissionDto;
|
|
48
|
+
}
|