diff --git a/src/controllers/devices/controller.ts b/src/controllers/devices/controller.ts index 79c307c54fa52f1a08e6bdcb5a707f988994910e..d0ffad07b70a99a441625cbba957443a4432bd98 100644 --- a/src/controllers/devices/controller.ts +++ b/src/controllers/devices/controller.ts @@ -9,6 +9,7 @@ import { Param, Patch, Post, + Put, Req, } from 'routing-controllers'; import { ServiceFactory } from '../../services/services-factory'; @@ -17,6 +18,7 @@ import { DevicesServiceInterface } from '../../services/devices-service'; import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi'; import { DeviceRequest, DeviceResponse, DeviceValuesRequest, GetDevicesResponse } from './dto'; import { StatusCodes, StatusCodeDescriptions } from '../../utils/status-codes'; +import { DeviceStatus } from '../../models/device'; @JsonController('/devices') export class DevicesController { @@ -127,7 +129,7 @@ export class DevicesController { // Backend-Internal access only, to be called by consumers if device is expired or dead. @OpenAPI({ - summary: 'Update device Status.', + summary: 'Update device Status. Service internal use only.', description: 'Updates the device status with the provided device ID, using the provided status value.', operationId: 'updateDeviceStatus', // security: [{ oauth2: [] }], @@ -141,10 +143,10 @@ export class DevicesController { @ResponseSchema(DeviceResponse, { description: 'The updated device.', }) - @Patch('/unauthenticated/:deviceId/:status') + @Put('/unauthenticated/:deviceId/status/:status') updateUserDeviceStatusById( @Param('deviceId') deviceId: string, - @Param('status') status: string, + @Param('status') status: DeviceStatus, ): Promise<DeviceResponse> { if (!process.env.EXPOSE_UNAUTHENTICATED_ROUTES || process.env.EXPOSE_UNAUTHENTICATED_ROUTES === 'False') { throw new ForbiddenError('Unauthenticated route is not enabled'); diff --git a/src/services/devices-service.ts b/src/services/devices-service.ts index a450ade3fc15eab89cd3a30d70e5234e6788b33b..42df567c5f0703e469da8bc18e0b0a75af2b245a 100644 --- a/src/services/devices-service.ts +++ b/src/services/devices-service.ts @@ -1,5 +1,6 @@ import { DeviceRequest, DeviceResponse, DeviceValuesRequest, GetDevicesResponse } from '../controllers/devices/dto'; import { AuthorizationBag } from '../models/authorization-bag'; +import { DeviceStatus } from '../models/device'; export interface DevicesServiceInterface { createUserDevice(device: DeviceRequest, authorizationBag: AuthorizationBag): Promise<DeviceResponse>; @@ -19,6 +20,6 @@ export interface DevicesServiceInterface { updateUserDeviceStatusById( deviceId: string, authorizationBag: AuthorizationBag, - status: string, + status: DeviceStatus, ): Promise<DeviceResponse>; } diff --git a/src/services/impl/devices-service-impl.ts b/src/services/impl/devices-service-impl.ts index 4dbb85bac7085a0e5e1f69a3899bcef3bebdff56..e7c7d5c4882a20f93ce20b9d3670aa855fb3cb71 100644 --- a/src/services/impl/devices-service-impl.ts +++ b/src/services/impl/devices-service-impl.ts @@ -8,6 +8,7 @@ import { UpdateUserDevice } from './devices/update-user-device'; import { AuthorizationBag } from '../../models/authorization-bag'; import { DeviceRequest, DeviceResponse, DeviceValuesRequest, GetDevicesResponse } from '../../controllers/devices/dto'; import { UpdateUserDeviceStatus } from './devices/update-user-device-status'; +import { DeviceStatus } from '../../models/device'; export class DevicesService extends AbstractService implements DevicesServiceInterface { createUserDevice(device: DeviceRequest, authorizationBag: AuthorizationBag): Promise<DeviceResponse> { @@ -37,7 +38,7 @@ export class DevicesService extends AbstractService implements DevicesServiceInt updateUserDeviceStatusById( deviceId: string, authorizationBag: AuthorizationBag, - status: string, + status: DeviceStatus, ): Promise<DeviceResponse> { return this.commandExecutor.execute(new UpdateUserDeviceStatus(deviceId, authorizationBag, status)); } diff --git a/src/services/impl/devices/test-user-device.ts b/src/services/impl/devices/test-user-device.ts index 3e942375b69d7da6dd118b110e8156f46b92b547..a87cd6d679a775e6281eef9adbea1c897776fcb8 100644 --- a/src/services/impl/devices/test-user-device.ts +++ b/src/services/impl/devices/test-user-device.ts @@ -1,6 +1,6 @@ import { Command } from '../command'; import { EntityManager } from 'typeorm'; -import { Device, DeviceSubType, DeviceType } from '../../../models/device'; +import { Device, DeviceStatus, DeviceSubType, DeviceType } from '../../../models/device'; import { testBrowserPush } from '../../../push-browser/push-browser-sender'; import { testSafariPush } from '../../../push-browser/push-safari-sender'; import { testMattermost } from '../../../push-browser/push-mattermost-sender'; @@ -37,12 +37,12 @@ export class TestUserDevice implements Command { if (testRet === 'EXPIRED' && selectedDevice.status !== 'EXPIRED') { // Device is expired, update the device status accordingly console.debug('Device is expired, updating DB'); - this.devicesService.updateUserDeviceStatusById(selectedDevice.id, null, 'EXPIRED'); + this.devicesService.updateUserDeviceStatusById(selectedDevice.id, null, DeviceStatus.EXPIRED); } if (testRet === 'OK' && selectedDevice.status === 'EXPIRED') { // Device is not expired anymore, update the device status accordingly console.debug('Device is not expired anymore, updating DB'); - this.devicesService.updateUserDeviceStatusById(selectedDevice.id, null, 'OK'); + this.devicesService.updateUserDeviceStatusById(selectedDevice.id, null, DeviceStatus.OK); } return; }