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 <yidhra@tuta.io>
This commit is contained in:
Mathis H (Avnyr) 2024-05-02 15:28:45 +02:00
parent b66a5aff6d
commit 8644b5add6
Signed by: Mathis
GPG Key ID: DD9E0666A747D126

View File

@ -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<IDbUser | ISError> {
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<ISError | string> {
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<ISError | string> {
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<ISError | string> {
"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`);