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:
parent
b66a5aff6d
commit
8644b5add6
@ -5,9 +5,9 @@ import { ErrorType, type ISError } from "@interfaces/services/ISError";
|
|||||||
import CredentialService from "@services/credential.service";
|
import CredentialService from "@services/credential.service";
|
||||||
import JwtService from "@services/jwt.service";
|
import JwtService from "@services/jwt.service";
|
||||||
import MySqlService from "@services/mysql.service";
|
import MySqlService from "@services/mysql.service";
|
||||||
|
import { isDebugMode } from "@utils/debugState";
|
||||||
import { Logger } from "tslog";
|
import { Logger } from "tslog";
|
||||||
import { v4 } from "uuid";
|
import { v4 } from "uuid";
|
||||||
import {isDebugMode} from "@utils/debugState";
|
|
||||||
|
|
||||||
const logger = new Logger({
|
const logger = new Logger({
|
||||||
name: "UserService",
|
name: "UserService",
|
||||||
@ -74,9 +74,9 @@ async function getUserFromIdService(id: string): Promise<IDbUser | ISError> {
|
|||||||
const firstUser = dbUser[0];
|
const firstUser = dbUser[0];
|
||||||
if (firstUser) return firstUser;
|
if (firstUser) return firstUser;
|
||||||
return {
|
return {
|
||||||
error: ErrorType.ServiceError,
|
error: ErrorType.ServiceError,
|
||||||
message: "No user found.",
|
message: "No user found.",
|
||||||
};
|
};
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
return {
|
return {
|
||||||
error: ErrorType.DatabaseError,
|
error: ErrorType.DatabaseError,
|
||||||
@ -203,7 +203,7 @@ async function login(inputData: IReqLogin): Promise<ISError | string> {
|
|||||||
message: dbUser.message,
|
message: dbUser.message,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
if (!dbUser.id) {
|
if (!dbUser?.id) {
|
||||||
return {
|
return {
|
||||||
error: ErrorType.NotFound,
|
error: ErrorType.NotFound,
|
||||||
message: "User not found.",
|
message: "User not found.",
|
||||||
@ -219,6 +219,7 @@ async function login(inputData: IReqLogin): Promise<ISError | string> {
|
|||||||
message: "Invalid password.",
|
message: "Invalid password.",
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
// Generate the JSDoc definition for those html status code
|
||||||
const token = await JwtService.sign(
|
const token = await JwtService.sign(
|
||||||
{
|
{
|
||||||
sub: dbUser.id,
|
sub: dbUser.id,
|
||||||
@ -235,6 +236,10 @@ async function login(inputData: IReqLogin): Promise<ISError | string> {
|
|||||||
"1d",
|
"1d",
|
||||||
"user",
|
"user",
|
||||||
);
|
);
|
||||||
|
if (isDebugMode())
|
||||||
|
logger.trace(
|
||||||
|
`\n\n> New token for login of "${dbUser.username}".\n${token}`,
|
||||||
|
);
|
||||||
return token;
|
return token;
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
logger.error(`\n\n${err}\n`);
|
logger.error(`\n\n${err}\n`);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user