From ef27b8bc9950a8ce109bac70d8b3e723eeab398c Mon Sep 17 00:00:00 2001 From: August Andersen Date: Wed, 10 Jan 2024 10:21:40 +0100 Subject: [PATCH 1/4] feedback changes. --- src/controllers/user-management/auth.controller.ts | 5 ++++- src/entities/dto/list-all-entities.dto.ts | 3 ++- src/services/chirpstack/chirpstack-gateway.service.ts | 2 +- src/services/data-management/payload-decoder.service.ts | 2 +- src/services/device-management/application.service.ts | 4 +++- 5 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/controllers/user-management/auth.controller.ts b/src/controllers/user-management/auth.controller.ts index e300d544..1f8108d2 100644 --- a/src/controllers/user-management/auth.controller.ts +++ b/src/controllers/user-management/auth.controller.ts @@ -68,7 +68,7 @@ export class AuthController { // Login without proper roles if (!(req.user instanceof User)) { - if (req.user == ErrorCodes.MissingRole) { + if (req.user === ErrorCodes.MissingRole) { // Send back to frontend with an error if (redirectTarget) { return res.redirect(`${redirectTarget}?error=${ErrorCodes.MissingRole}`); @@ -82,6 +82,9 @@ export class AuthController { const { nameId, id } = req.user; const jwt = await this.authService.issueJwt(nameId, id, true); const baseUrl = redirectTarget ? redirectTarget : Configuration()["frontend"]["baseurl"]; + if (!baseUrl.includes("applications")) { + return res.redirect(`${baseUrl}/applications?jwt=${jwt.accessToken}`); + } return res.redirect(`${baseUrl}?jwt=${jwt.accessToken}`); } diff --git a/src/entities/dto/list-all-entities.dto.ts b/src/entities/dto/list-all-entities.dto.ts index 1aef0ff9..1b43c23a 100644 --- a/src/entities/dto/list-all-entities.dto.ts +++ b/src/entities/dto/list-all-entities.dto.ts @@ -41,5 +41,6 @@ export class ListAllEntitiesDto { | "deviceModel" | "devices" | "dataTargets" - | "organizationName"; + | "organizationName" + | "null" } diff --git a/src/services/chirpstack/chirpstack-gateway.service.ts b/src/services/chirpstack/chirpstack-gateway.service.ts index a8f0d17c..d4f1df0c 100644 --- a/src/services/chirpstack/chirpstack-gateway.service.ts +++ b/src/services/chirpstack/chirpstack-gateway.service.ts @@ -491,7 +491,7 @@ export class ChirpstackGatewayService extends GenericChirpstackConfigurationServ private getSortingForGateways(query: ListAllEntitiesDto) { let orderBy = "gateway.id"; - if (query.orderOn == null) { + if (query.orderOn === 'null') { return orderBy; } diff --git a/src/services/data-management/payload-decoder.service.ts b/src/services/data-management/payload-decoder.service.ts index 935cffa2..1cab6a8e 100644 --- a/src/services/data-management/payload-decoder.service.ts +++ b/src/services/data-management/payload-decoder.service.ts @@ -46,7 +46,7 @@ export class PayloadDecoderService { organizationId: number | null | undefined ): Promise { const [result, total] = await this.payloadDecoderRepository.findAndCount({ - where: organizationId ? { id: organizationId } : {}, + where: organizationId ? { organization: {id: organizationId} } : {}, take: query.limit, skip: query.offset, order: this.getSorting(query), diff --git a/src/services/device-management/application.service.ts b/src/services/device-management/application.service.ts index 10fa248a..669a9b99 100644 --- a/src/services/device-management/application.service.ts +++ b/src/services/device-management/application.service.ts @@ -386,6 +386,7 @@ export class ApplicationService { .skip(query?.offset ? +query.offset : 0) .take(query?.limit ? +query.limit : 100) .orderBy(orderByColumn, direction, nullsOrder) + .addOrderBy(orderByColumn, direction, nullsOrder) .getManyAndCount(); if (query.orderOn === "dataTargets") { @@ -420,7 +421,8 @@ export class ApplicationService { query.orderOn === "rssi" || query.orderOn === "snr" || query.orderOn === "deviceModel" || - query.orderOn === "dataTargets" + query.orderOn === "dataTargets" || + query.orderOn === "type" ) { if (query.orderOn === "active") { orderBy = `metadata.sentTime`; From 14ccaa9590377ec3acf78de1c26a1b5cfbe966b9 Mon Sep 17 00:00:00 2001 From: August Andersen Date: Wed, 10 Jan 2024 10:28:44 +0100 Subject: [PATCH 2/4] removed one addorderby check (cleanup) --- src/services/device-management/application.service.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/services/device-management/application.service.ts b/src/services/device-management/application.service.ts index 669a9b99..38436d47 100644 --- a/src/services/device-management/application.service.ts +++ b/src/services/device-management/application.service.ts @@ -386,7 +386,6 @@ export class ApplicationService { .skip(query?.offset ? +query.offset : 0) .take(query?.limit ? +query.limit : 100) .orderBy(orderByColumn, direction, nullsOrder) - .addOrderBy(orderByColumn, direction, nullsOrder) .getManyAndCount(); if (query.orderOn === "dataTargets") { From 7793b4c1b085b4d8e704965f87f9ecccac7b3a5a Mon Sep 17 00:00:00 2001 From: August Andersen Date: Wed, 10 Jan 2024 10:30:53 +0100 Subject: [PATCH 3/4] removed "type" (not used) from ordering in backend. --- src/services/device-management/application.service.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/services/device-management/application.service.ts b/src/services/device-management/application.service.ts index 38436d47..10fa248a 100644 --- a/src/services/device-management/application.service.ts +++ b/src/services/device-management/application.service.ts @@ -420,8 +420,7 @@ export class ApplicationService { query.orderOn === "rssi" || query.orderOn === "snr" || query.orderOn === "deviceModel" || - query.orderOn === "dataTargets" || - query.orderOn === "type" + query.orderOn === "dataTargets" ) { if (query.orderOn === "active") { orderBy = `metadata.sentTime`; From acf6da7a0a3ee2acc9b1197479b3e77a69bd8a6c Mon Sep 17 00:00:00 2001 From: August Andersen Date: Fri, 12 Jan 2024 08:53:09 +0100 Subject: [PATCH 4/4] changed null check on gateways, added chirpstackhostname and port to configuration --- src/config/configuration.ts | 2 ++ src/entities/dto/list-all-entities.dto.ts | 1 - src/services/chirpstack/chirpstack-gateway.service.ts | 2 +- .../chirpstack/generic-chirpstack-configuration.service.ts | 2 +- .../device-management/lorawan-device-database-enrich-job.ts | 3 ++- 5 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/config/configuration.ts b/src/config/configuration.ts index 3ad205ee..b26cfe02 100644 --- a/src/config/configuration.ts +++ b/src/config/configuration.ts @@ -28,6 +28,8 @@ export default (): any => { }, chirpstack: { apikey: process.env.CHIRPSTACK_API_KEY || "apikey", + hostname: process.env.CHIRPSTACK_HOSTNAME || "localhost", + port: process.env.CHIRPSTACK_PORT || 8080, }, logLevels: process.env.LOG_LEVEL ? GetLogLevels(process.env.LOG_LEVEL) : GetLogLevels("debug"), email: { diff --git a/src/entities/dto/list-all-entities.dto.ts b/src/entities/dto/list-all-entities.dto.ts index 1b43c23a..fe3cc177 100644 --- a/src/entities/dto/list-all-entities.dto.ts +++ b/src/entities/dto/list-all-entities.dto.ts @@ -42,5 +42,4 @@ export class ListAllEntitiesDto { | "devices" | "dataTargets" | "organizationName" - | "null" } diff --git a/src/services/chirpstack/chirpstack-gateway.service.ts b/src/services/chirpstack/chirpstack-gateway.service.ts index d4f1df0c..12c970b9 100644 --- a/src/services/chirpstack/chirpstack-gateway.service.ts +++ b/src/services/chirpstack/chirpstack-gateway.service.ts @@ -491,7 +491,7 @@ export class ChirpstackGatewayService extends GenericChirpstackConfigurationServ private getSortingForGateways(query: ListAllEntitiesDto) { let orderBy = "gateway.id"; - if (query.orderOn === 'null') { + if (!query.orderOn) { return orderBy; } diff --git a/src/services/chirpstack/generic-chirpstack-configuration.service.ts b/src/services/chirpstack/generic-chirpstack-configuration.service.ts index 2d98d753..f712e0d6 100644 --- a/src/services/chirpstack/generic-chirpstack-configuration.service.ts +++ b/src/services/chirpstack/generic-chirpstack-configuration.service.ts @@ -21,7 +21,7 @@ import { MulticastGroupServiceClient } from "@chirpstack/chirpstack-api/api/mult @Injectable() export class GenericChirpstackConfigurationService { - baseUrlGRPC = `${process.env.CHIRPSTACK_HOSTNAME || "localhost"}:${process.env.CHIRPSTACK_PORT || "8080"}`; + baseUrlGRPC = `${configuration()["chirpstack"]["hostname"]}:${configuration()["chirpstack"]["port"]}`; private readonly innerLogger = new Logger(GenericChirpstackConfigurationService.name); protected applicationServiceClient = new ApplicationServiceClient(this.baseUrlGRPC, credentials.createInsecure()); diff --git a/src/services/device-management/lorawan-device-database-enrich-job.ts b/src/services/device-management/lorawan-device-database-enrich-job.ts index 6bfe881a..b3d244c7 100644 --- a/src/services/device-management/lorawan-device-database-enrich-job.ts +++ b/src/services/device-management/lorawan-device-database-enrich-job.ts @@ -12,6 +12,7 @@ import { timestampToDate } from "@helpers/date.helper"; import { GetGatewayRequest, GetGatewayResponse } from "@chirpstack/chirpstack-api/api/gateway_pb"; import { GatewayServiceClient } from "@chirpstack/chirpstack-api/api/gateway_grpc_pb"; import { credentials } from "@grpc/grpc-js"; +import configuration from "@config/configuration"; @Injectable() export class LorawanDeviceDatabaseEnrichJob { @@ -23,7 +24,7 @@ export class LorawanDeviceDatabaseEnrichJob { @InjectRepository(Gateway) private gatewayRepository: Repository ) {} - baseUrlGRPC = `${process.env.CHIRPSTACK_HOSTNAME || "localhost"}:${process.env.CHIRPSTACK_PORT || "8080"}`; + baseUrlGRPC = `${configuration()["chirpstack"]["hostname"]}:${configuration()["chirpstack"]["port"]}`; private gatewayClient = new GatewayServiceClient(this.baseUrlGRPC, credentials.createInsecure()); private readonly logger = new Logger(LorawanDeviceDatabaseEnrichJob.name, { timestamp: true });