From 4cff2ec886869b8a391ca294d65adcae4b2ccf19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=82ngelo=20Tadeucci?= Date: Sun, 4 Jun 2023 19:00:30 -0300 Subject: [PATCH] remove keys from object helper func --- src/controllers/api/loginController.ts | 18 +++++++----------- src/helpers/general.ts | 19 ++++++++++++++++++- src/helpers/inventoryHelpers.ts | 9 ++++----- src/types/loginTypes.ts | 2 +- 4 files changed, 30 insertions(+), 18 deletions(-) diff --git a/src/controllers/api/loginController.ts b/src/controllers/api/loginController.ts index e48e6df0..0d7e63a9 100644 --- a/src/controllers/api/loginController.ts +++ b/src/controllers/api/loginController.ts @@ -1,18 +1,15 @@ -/* eslint-disable @typescript-eslint/no-unused-vars */ -import { RequestHandler } from "express"; - import config from "@/config.json"; - +import { removeKeysFromObject } from "@/src/helpers/general"; import { toLoginRequest } from "@/src/helpers/loginHelpers"; import { Account } from "@/src/models/loginModel"; import { createAccount, isCorrectPassword } from "@/src/services/loginService"; import { ILoginResponse } from "@/src/types/loginTypes"; -import { DTLS, groups, HUB, IRC, Nonce, NRS, platformCDNs } from "@/static/fixed_responses/login_static"; +import { DTLS, HUB, IRC, NRS, Nonce, groups, platformCDNs } from "@/static/fixed_responses/login_static"; +import { RequestHandler } from "express"; // eslint-disable-next-line @typescript-eslint/no-misused-promises const loginController: RequestHandler = async (request, response) => { - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-argument - const body = JSON.parse(request.body); // parse octet stream of json data to json object + const body: unknown = JSON.parse(String(request.body)); const loginRequest = toLoginRequest(body); const account = await Account.findOne({ email: loginRequest.email }); //{ _id: 0, __v: 0 } @@ -30,9 +27,8 @@ const loginController: RequestHandler = async (request, response) => { ConsentNeeded: false, TrackedSettings: [] }); - console.log("creating new account"); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { email, password, ...databaseAccount } = newAccount; + + const databaseAccount = removeKeysFromObject(newAccount, ["email", "password"]); const newLoginResponse: ILoginResponse = { ...databaseAccount, Groups: groups, @@ -61,7 +57,7 @@ const loginController: RequestHandler = async (request, response) => { return; } - const { email, password, ...databaseAccount } = account.toJSON(); + const databaseAccount = removeKeysFromObject(account.toJSON(), ["email", "password"]); const newLoginResponse: ILoginResponse = { ...databaseAccount, Groups: groups, diff --git a/src/helpers/general.ts b/src/helpers/general.ts index 8aa19a1a..e37be5cb 100644 --- a/src/helpers/general.ts +++ b/src/helpers/general.ts @@ -55,4 +55,21 @@ const parseBoolean = (booleanCandidate: unknown): boolean => { return booleanCandidate; }; -export { isString, isNumber, parseString, parseNumber, parseDateNumber, parseBoolean, parseEmail }; +function removeKeysFromObject(object: T, keys: Array): Partial { + const newObject: Partial = object; + for (const key of keys) { + delete newObject[key]; + } + return newObject; +} + +export { + isString, + isNumber, + parseString, + parseNumber, + parseDateNumber, + parseBoolean, + parseEmail, + removeKeysFromObject +}; diff --git a/src/helpers/inventoryHelpers.ts b/src/helpers/inventoryHelpers.ts index 7879c007..173aaf19 100644 --- a/src/helpers/inventoryHelpers.ts +++ b/src/helpers/inventoryHelpers.ts @@ -1,9 +1,8 @@ -import { IInventoryDatabase, IInventoryResponse } from "@/src/types/inventoryTypes"; +import { removeKeysFromObject } from "@/src/helpers/general"; +import { IInventoryDatabase } from "@/src/types/inventoryTypes"; -const toInventoryResponse = (inventoryDatabase: IInventoryDatabase): IInventoryResponse => { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { accountOwnerId, ...inventoreResponse } = inventoryDatabase; - return inventoreResponse; +const toInventoryResponse = (inventoryDatabase: IInventoryDatabase) => { + return removeKeysFromObject(inventoryDatabase, ["accountOwnerId"]); }; export { toInventoryResponse }; diff --git a/src/types/loginTypes.ts b/src/types/loginTypes.ts index 1d53de43..42e6c21a 100644 --- a/src/types/loginTypes.ts +++ b/src/types/loginTypes.ts @@ -1,4 +1,4 @@ -export interface ILoginResponse extends Omit { +export interface ILoginResponse extends Omit, "email" | "password"> { Groups: IGroup[]; Nonce: number; BuildLabel: string;