From 8644b5add69530c788584f0cc8c1fe5b6a23f9e2 Mon Sep 17 00:00:00 2001 From: Mathis Date: Thu, 2 May 2024 15:28:45 +0200 Subject: [PATCH] feat(services): update `user.service.ts` for better error handling and debugging The updated `user.service.ts` now includes better error handling using optional chaining and also generates a JSDoc definition for HTML status codes. An extra logger trace has also been added, which provides token related information in debug mode. This will capture user login token details for debugging purposes. Also cleaned up code formatting for readability. Issue: #18 Signed-off-by: Mathis --- src/services/user.service.ts | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/services/user.service.ts b/src/services/user.service.ts index 8a28c89..cc40393 100644 --- a/src/services/user.service.ts +++ b/src/services/user.service.ts @@ -5,9 +5,9 @@ import { ErrorType, type ISError } from "@interfaces/services/ISError"; import CredentialService from "@services/credential.service"; import JwtService from "@services/jwt.service"; import MySqlService from "@services/mysql.service"; +import { isDebugMode } from "@utils/debugState"; import { Logger } from "tslog"; import { v4 } from "uuid"; -import {isDebugMode} from "@utils/debugState"; const logger = new Logger({ name: "UserService", @@ -74,9 +74,9 @@ async function getUserFromIdService(id: string): Promise { const firstUser = dbUser[0]; if (firstUser) return firstUser; return { - error: ErrorType.ServiceError, - message: "No user found.", - }; + error: ErrorType.ServiceError, + message: "No user found.", + }; } catch (err) { return { error: ErrorType.DatabaseError, @@ -203,7 +203,7 @@ async function login(inputData: IReqLogin): Promise { message: dbUser.message, }; } - if (!dbUser.id) { + if (!dbUser?.id) { return { error: ErrorType.NotFound, message: "User not found.", @@ -219,6 +219,7 @@ async function login(inputData: IReqLogin): Promise { message: "Invalid password.", }; } + // Generate the JSDoc definition for those html status code const token = await JwtService.sign( { sub: dbUser.id, @@ -235,6 +236,10 @@ async function login(inputData: IReqLogin): Promise { "1d", "user", ); + if (isDebugMode()) + logger.trace( + `\n\n> New token for login of "${dbUser.username}".\n${token}`, + ); return token; } catch (err) { logger.error(`\n\n${err}\n`);