ソースを参照

fix(syncing-server): allow sender to decline the invite (#671)

Karol Sójko 1 年間 前
コミット
46c4947871

+ 6 - 6
packages/syncing-server/src/Domain/UseCase/SharedVaults/DeclineInviteToSharedVault/DeclineInviteToSharedVault.spec.ts

@@ -30,7 +30,7 @@ describe('DeclineInviteToSharedVault', () => {
 
     const result = await useCase.execute({
       inviteUuid: 'invalid',
-      originatorUuid: '00000000-0000-0000-0000-000000000000',
+      userUuid: '00000000-0000-0000-0000-000000000000',
     })
 
     expect(result.isFailed()).toBe(true)
@@ -42,7 +42,7 @@ describe('DeclineInviteToSharedVault', () => {
 
     const result = await useCase.execute({
       inviteUuid: '00000000-0000-0000-0000-000000000000',
-      originatorUuid: 'invalid',
+      userUuid: 'invalid',
     })
 
     expect(result.isFailed()).toBe(true)
@@ -56,7 +56,7 @@ describe('DeclineInviteToSharedVault', () => {
 
     const result = await useCase.execute({
       inviteUuid: '00000000-0000-0000-0000-000000000000',
-      originatorUuid: '00000000-0000-0000-0000-000000000000',
+      userUuid: '00000000-0000-0000-0000-000000000000',
     })
 
     expect(result.isFailed()).toBe(true)
@@ -68,11 +68,11 @@ describe('DeclineInviteToSharedVault', () => {
 
     const result = await useCase.execute({
       inviteUuid: '00000000-0000-0000-0000-000000000000',
-      originatorUuid: '00000000-0000-0000-0000-000000000001',
+      userUuid: '00000000-0000-0000-0000-000000000001',
     })
 
     expect(result.isFailed()).toBe(true)
-    expect(result.getError()).toBe('Only the recipient of the invite can decline it')
+    expect(result.getError()).toBe('Only the recipient or the sender can decline the invite')
   })
 
   it('should delete invite', async () => {
@@ -80,7 +80,7 @@ describe('DeclineInviteToSharedVault', () => {
 
     await useCase.execute({
       inviteUuid: '00000000-0000-0000-0000-000000000000',
-      originatorUuid: '00000000-0000-0000-0000-000000000000',
+      userUuid: '00000000-0000-0000-0000-000000000000',
     })
 
     expect(sharedVaultInviteRepository.remove).toHaveBeenCalled()

+ 6 - 6
packages/syncing-server/src/Domain/UseCase/SharedVaults/DeclineInviteToSharedVault/DeclineInviteToSharedVault.ts

@@ -12,19 +12,19 @@ export class DeclineInviteToSharedVault implements UseCaseInterface<void> {
     }
     const inviteUuid = inviteUuidOrError.getValue()
 
-    const originatorUuidOrError = Uuid.create(dto.originatorUuid)
-    if (originatorUuidOrError.isFailed()) {
-      return Result.fail(originatorUuidOrError.getError())
+    const userUuidOrError = Uuid.create(dto.userUuid)
+    if (userUuidOrError.isFailed()) {
+      return Result.fail(userUuidOrError.getError())
     }
-    const originatorUuid = originatorUuidOrError.getValue()
+    const userUuid = userUuidOrError.getValue()
 
     const invite = await this.sharedVaultInviteRepository.findByUuid(inviteUuid)
     if (!invite) {
       return Result.fail('Invite not found')
     }
 
-    if (!invite.props.userUuid.equals(originatorUuid)) {
-      return Result.fail('Only the recipient of the invite can decline it')
+    if (!invite.props.userUuid.equals(userUuid) && !invite.props.senderUuid.equals(userUuid)) {
+      return Result.fail('Only the recipient or the sender can decline the invite')
     }
 
     await this.sharedVaultInviteRepository.remove(invite)

+ 1 - 1
packages/syncing-server/src/Domain/UseCase/SharedVaults/DeclineInviteToSharedVault/DeclineInviteToSharedVaultDTO.ts

@@ -1,4 +1,4 @@
 export interface DeclineInviteToSharedVaultDTO {
   inviteUuid: string
-  originatorUuid: string
+  userUuid: string
 }

+ 1 - 1
packages/syncing-server/src/Domain/UseCase/SharedVaults/DeleteSharedVaultInvitesSentByUser/DeleteSharedVaultInvitesSentByUser.ts

@@ -29,7 +29,7 @@ export class DeleteSharedVaultInvitesSentByUser implements UseCaseInterface<void
     for (const invite of inboundInvites) {
       const result = await this.declineInviteToSharedVault.execute({
         inviteUuid: invite.id.toString(),
-        originatorUuid: userUuid.value,
+        userUuid: userUuid.value,
       })
       if (result.isFailed()) {
         return Result.fail(result.getError())

+ 1 - 1
packages/syncing-server/src/Domain/UseCase/SharedVaults/DeleteSharedVaultInvitesToUser/DeleteSharedVaultInvitesToUser.ts

@@ -20,7 +20,7 @@ export class DeleteSharedVaultInvitesToUser implements UseCaseInterface<void> {
     for (const invite of inboundInvites) {
       const result = await this.declineInviteToSharedVault.execute({
         inviteUuid: invite.id.toString(),
-        originatorUuid: userUuid.value,
+        userUuid: userUuid.value,
       })
       if (result.isFailed()) {
         return Result.fail(result.getError())

+ 2 - 2
packages/syncing-server/src/Infra/InversifyExpressUtils/HomeServer/HomeServerSharedVaultInvitesController.ts

@@ -132,7 +132,7 @@ export class HomeServerSharedVaultInvitesController extends BaseHttpController {
   async declineSharedVaultInvite(request: Request, response: Response): Promise<results.JsonResult> {
     const result = await this.declineSharedVaultInviteUseCase.execute({
       inviteUuid: request.params.inviteUuid,
-      originatorUuid: response.locals.user.uuid,
+      userUuid: response.locals.user.uuid,
     })
 
     if (result.isFailed()) {
@@ -239,7 +239,7 @@ export class HomeServerSharedVaultInvitesController extends BaseHttpController {
   async deleteSharedVaultInvite(request: Request, response: Response): Promise<results.JsonResult> {
     const result = await this.declineSharedVaultInviteUseCase.execute({
       inviteUuid: request.params.inviteUuid,
-      originatorUuid: response.locals.user.uuid,
+      userUuid: response.locals.user.uuid,
     })
 
     if (result.isFailed()) {