refactor(wip): vault system identifier

This commit is contained in:
Mo
2023-05-31 16:07:13 -05:00
parent 9323ca79c6
commit 07ae120e2a
34 changed files with 233 additions and 493 deletions
@@ -32,7 +32,7 @@ export class GroupInvitesController extends BaseHttpController {
groupUuid: request.params.groupUuid,
userUuid: request.body.invitee_uuid,
inviterPublicKey: request.body.inviter_public_key,
encryptedGroupData: request.body.encrypted_group_data,
encryptedVaultKeyContent: request.body.encrypted_vault_key_content,
inviteType: request.body.invite_type,
permissions: request.body.permissions,
})
@@ -53,7 +53,7 @@ export class GroupInvitesController extends BaseHttpController {
originatorUuid: response.locals.user.uuid,
inviteUuid: request.params.inviteUuid,
inviterPublicKey: request.body.inviter_public_key,
encryptedGroupData: request.body.encrypted_group_data,
encryptedVaultKeyContent: request.body.encrypted_vault_key_content,
permissions: request.body.permissions,
})
@@ -18,6 +18,8 @@ import { GroupProjection } from '../Projection/GroupProjection'
import { GroupUserProjection } from '../Projection/GroupUserProjection'
import { CreateGroupFileValetToken } from '../Domain/UseCase/CreateGroupFileValetToken/CreateGroupFileValetToken'
import { RemovedGroupUserServiceInterface } from '../Domain/RemovedGroupUser/Service/RemovedGroupUserServiceInterface'
import { Item } from '../Domain/Item/Item'
import { ItemProjection } from '../Projection/ItemProjection'
@controller('/groups')
export class GroupsController extends BaseHttpController {
@@ -27,6 +29,7 @@ export class GroupsController extends BaseHttpController {
@inject(TYPES.GroupProjector) private groupProjector: ProjectorInterface<Group, GroupProjection>,
@inject(TYPES.GroupUserProjector) private groupUserProjector: ProjectorInterface<GroupUser, GroupUserProjection>,
@inject(TYPES.CreateGroupFileReadValetToken) private createGroupFileReadValetToken: CreateGroupFileValetToken,
@inject(TYPES.ItemProjector) private itemProjector: ProjectorInterface<Item, ItemProjection>,
) {
super()
}
@@ -42,36 +45,11 @@ export class GroupsController extends BaseHttpController {
})
}
@httpPost('/:groupUuid/valet-tokens', TYPES.AuthMiddleware)
public async getValetTokenForGroupFile(
request: Request,
response: Response,
): Promise<results.NotFoundResult | results.JsonResult> {
const valetTokenResult = await this.createGroupFileReadValetToken.execute({
userUuid: response.locals.user.uuid,
groupUuid: request.params.groupUuid,
fileUuid: request.body.file_uuid,
remoteIdentifier: request.body.remote_identifier,
operation: request.body.operation,
unencryptedFileSize: request.body.unencrypted_file_size,
moveOperationType: request.body.move_operation_type,
groupToGroupMoveTargetUuid: request.body.group_to_group_move_target_uuid,
})
if (valetTokenResult.success === false) {
return this.errorResponse(400, `Failed to create group valet token: ${valetTokenResult.reason}`)
}
return this.json({
valetToken: valetTokenResult.valetToken,
})
}
@httpPost('/', TYPES.AuthMiddleware)
public async createGroup(request: Request, response: Response): Promise<results.NotFoundResult | results.JsonResult> {
const result = await this.groupService.createGroup({
userUuid: response.locals.user.uuid,
groupUuid: request.body.group_uuid,
vaultSystemIdentifier: request.body.vault_system_identifier,
specifiedItemsKeyUuid: request.body.specified_items_key_uuid,
})
@@ -116,6 +94,46 @@ export class GroupsController extends BaseHttpController {
return this.json({ success: true })
}
@httpPost('/:groupUuid/items', TYPES.AuthMiddleware)
public async addItemToGroup(
request: Request,
response: Response,
): Promise<results.NotFoundResult | results.JsonResult> {
const result = await this.groupService.addItemToGroup({
groupUuid: request.params.groupUuid,
itemUuid: request.body.item_uuid,
originatorUuid: response.locals.user.uuid,
})
if (!result) {
return this.errorResponse(400, 'Could not add item to group')
}
return this.json({
item: this.itemProjector.projectFull(result),
})
}
@httpDelete('/:groupUuid/items', TYPES.AuthMiddleware)
public async removeItemFromGroup(
request: Request,
response: Response,
): Promise<results.NotFoundResult | results.JsonResult> {
const result = await this.groupService.removeItemFromGroup({
groupUuid: request.params.groupUuid,
itemUuid: request.body.item_uuid,
originatorUuid: response.locals.user.uuid,
})
if (!result) {
return this.errorResponse(400, 'Could not remove item from group')
}
return this.json({
item: this.itemProjector.projectFull(result),
})
}
@httpGet('/removed', TYPES.AuthMiddleware)
public async getAllRemovedFromGroupsForCurrentUser(
_request: Request,
@@ -139,6 +157,31 @@ export class GroupsController extends BaseHttpController {
})
}
@httpPost('/:groupUuid/valet-tokens', TYPES.AuthMiddleware)
public async getValetTokenForGroupFile(
request: Request,
response: Response,
): Promise<results.NotFoundResult | results.JsonResult> {
const valetTokenResult = await this.createGroupFileReadValetToken.execute({
userUuid: response.locals.user.uuid,
groupUuid: request.params.groupUuid,
fileUuid: request.body.file_uuid,
remoteIdentifier: request.body.remote_identifier,
operation: request.body.operation,
unencryptedFileSize: request.body.unencrypted_file_size,
moveOperationType: request.body.move_operation_type,
groupToGroupMoveTargetUuid: request.body.group_to_group_move_target_uuid,
})
if (valetTokenResult.success === false) {
return this.errorResponse(400, `Failed to create group valet token: ${valetTokenResult.reason}`)
}
return this.json({
valetToken: valetTokenResult.valetToken,
})
}
private errorResponse(status: number, message?: string, tag?: string) {
return this.json(
{