Quellcode durchsuchen

fix(auth): update shared subscriptions upon subscription sync (#1022)

Karol Sójko vor 1 Jahr
Ursprung
Commit
d7a1c667dd

+ 1 - 0
packages/auth/src/Bootstrap/Container.ts

@@ -1421,6 +1421,7 @@ export class ContainerConfigLoader {
           container.get<SetSettingValue>(TYPES.Auth_SetSettingValue),
           container.get<OfflineSettingServiceInterface>(TYPES.Auth_OfflineSettingService),
           container.get<ContentDecoderInterface>(TYPES.Auth_ContenDecoder),
+          container.get<RenewSharedSubscriptions>(TYPES.Auth_RenewSharedSubscriptions),
           container.get<winston.Logger>(TYPES.Auth_Logger),
         ),
       )

+ 15 - 0
packages/auth/src/Domain/Handler/SubscriptionSyncRequestedEventHandler.ts

@@ -16,6 +16,7 @@ import { OfflineSettingName } from '../Setting/OfflineSettingName'
 import { UserSubscriptionType } from '../Subscription/UserSubscriptionType'
 import { ApplyDefaultSubscriptionSettings } from '../UseCase/ApplyDefaultSubscriptionSettings/ApplyDefaultSubscriptionSettings'
 import { SetSettingValue } from '../UseCase/SetSettingValue/SetSettingValue'
+import { RenewSharedSubscriptions } from '../UseCase/RenewSharedSubscriptions/RenewSharedSubscriptions'
 
 export class SubscriptionSyncRequestedEventHandler implements DomainEventHandlerInterface {
   constructor(
@@ -27,6 +28,7 @@ export class SubscriptionSyncRequestedEventHandler implements DomainEventHandler
     private setSettingValue: SetSettingValue,
     private offlineSettingService: OfflineSettingServiceInterface,
     private contentDecoder: ContentDecoderInterface,
+    private renewSharedSubscriptions: RenewSharedSubscriptions,
     private logger: Logger,
   ) {}
 
@@ -85,6 +87,19 @@ export class SubscriptionSyncRequestedEventHandler implements DomainEventHandler
       event.payload.timestamp,
     )
 
+    const renewalResult = await this.renewSharedSubscriptions.execute({
+      inviterEmail: user.email,
+      newSubscriptionId: event.payload.subscriptionId,
+      newSubscriptionName: event.payload.subscriptionName,
+      newSubscriptionExpiresAt: event.payload.subscriptionExpiresAt,
+      timestamp: event.payload.timestamp,
+    })
+    if (renewalResult.isFailed()) {
+      this.logger.error(`Could not renew shared subscriptions for user: ${renewalResult.getError()}`, {
+        userId: user.uuid,
+      })
+    }
+
     await this.roleService.addUserRoleBasedOnSubscription(user, event.payload.subscriptionName)
 
     const applyingSettingsResult = await this.applyDefaultSubscriptionSettings.execute({

+ 1 - 0
packages/auth/src/Infra/TypeORM/TypeORMUserSubscriptionRepository.ts

@@ -84,6 +84,7 @@ export class TypeORMUserSubscriptionRepository implements UserSubscriptionReposi
         userUuid,
         subscriptionId,
       })
+      .orderBy('ends_at', 'DESC')
       .getOne()
   }