From e5f123e65a93681245320efa94afc9ce3dea6cda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Kosi=C5=84ski?= Date: Wed, 3 Mar 2021 16:13:46 +0100 Subject: [PATCH] feat(origin-device-registry-irec-form-api): added validate device ownership hander --- .../src/device/device.module.ts | 4 ++- .../validate-device-ownership.handler.ts | 26 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 packages/devices/origin-device-registry-irec-form-api/src/device/handlers/validate-device-ownership.handler.ts diff --git a/packages/devices/origin-device-registry-irec-form-api/src/device/device.module.ts b/packages/devices/origin-device-registry-irec-form-api/src/device/device.module.ts index 27cada46f2..db51bc61f1 100644 --- a/packages/devices/origin-device-registry-irec-form-api/src/device/device.module.ts +++ b/packages/devices/origin-device-registry-irec-form-api/src/device/device.module.ts @@ -7,6 +7,7 @@ import { TypeOrmModule } from '@nestjs/typeorm'; import { DeviceController } from './device.controller'; import { Device } from './device.entity'; import { DeviceService, SM_READS_ADAPTER } from './device.service'; +import { ValidateDeviceOwnershipQueryHandler } from './handlers/validate-device-ownership.handler'; @Module({}) export class DeviceModule { @@ -19,7 +20,8 @@ export class DeviceModule { provide: SM_READS_ADAPTER, useValue: smartMeterReadingsAdapter }, - DeviceService + DeviceService, + ValidateDeviceOwnershipQueryHandler ], controllers: [DeviceController], exports: [DeviceService] diff --git a/packages/devices/origin-device-registry-irec-form-api/src/device/handlers/validate-device-ownership.handler.ts b/packages/devices/origin-device-registry-irec-form-api/src/device/handlers/validate-device-ownership.handler.ts new file mode 100644 index 0000000000..e617cfc6c3 --- /dev/null +++ b/packages/devices/origin-device-registry-irec-form-api/src/device/handlers/validate-device-ownership.handler.ts @@ -0,0 +1,26 @@ +import { ValidateDeviceOwnershipQuery } from '@energyweb/origin-backend-core'; +import { ConfigService } from '@nestjs/config'; +import { IQueryHandler, QueryHandler } from '@nestjs/cqrs'; +import { DeviceService } from '../device.service'; + +@QueryHandler(ValidateDeviceOwnershipQuery) +export class ValidateDeviceOwnershipQueryHandler + implements IQueryHandler { + private issuerTypeId: string; + + constructor(private readonly deviceService: DeviceService, configService: ConfigService) { + this.issuerTypeId = configService.get('ISSUER_ID'); + } + + public async execute({ + ownerId, + externalRegistryId + }: ValidateDeviceOwnershipQuery): Promise { + const device = await this.deviceService.findByExternalId({ + id: externalRegistryId, + type: this.issuerTypeId + }); + + return device?.organizationId === parseInt(ownerId, 10); + } +}