feat(services): enhance user service functions

- Modified the logic in `getUserByEmail` to handle multiple user instances.
- Altered the dob field to save as current date in inserted user records.
- Richened `getByEmailService` function to check email existence in the database.
- Adjusted `is_mail_verified` flag to `is_email_verified` within user insertion function.

Issue: #18
Signed-off-by: Mathis <yidhra@tuta.io>
This commit is contained in:
Mathis H (Avnyr) 2024-05-02 12:21:37 +02:00
parent d78b0aec4c
commit 3b6726113d
Signed by: Mathis
GPG Key ID: DD9E0666A747D126

View File

@ -26,14 +26,18 @@ const DbHandler = new MySqlService.Handler("UserService");
async function getUserByEmail(targetEmail: string): Promise<IDbUser | ISError> {
try {
const dbUser = await MySqlService.User.getByEmail(DbHandler, targetEmail);
if (dbUser === undefined) {
if (dbUser.length === 0) {
logger.info(`\n\n> User not found (${targetEmail})\n`);
return {
error: ErrorType.NotFound,
message: "The user was not fund.",
};
}
return dbUser;
if (dbUser.length === 1 && dbUser[0]) return dbUser[0];
return {
error: ErrorType.ServiceError,
message: "To many user found, suspicious.",
};
} catch (err) {
logger.error(err);
return {
@ -135,17 +139,18 @@ async function register(inputData: IReqRegister): Promise<ISError | string> {
};
}
const currentId = v4();
logger.info(`\n\n> Trying to insert a new user... (${currentId})\n`);
const NewUser = await MySqlService.User.insert(DbHandler, {
id: currentId,
email: inputData.email,
username: inputData.username,
firstname: inputData.firstName,
lastname: inputData.lastName,
dob: inputData.dob,
dob: new Date(),
hash: passwordHash,
gdpr: currentDate,
is_admin: false,
is_mail_verified: false,
is_email_verified: false,
});
if ("error" in NewUser || NewUser.affectedRows === 0) {
return {
@ -240,6 +245,16 @@ async function login(inputData: IReqLogin): Promise<ISError | string> {
}
}
async function getByEmailService(email: string): Promise<IDbUser | false> {
const dbUser = await MySqlService.User.getByEmail(DbHandler, email);
if (dbUser === undefined) {
logger.trace(`\n\n> User not found in DB (${email})\n`);
return false;
}
logger.trace(dbUser);
return dbUser;
}
//TOTest
/**
* Retrieves all users from the database.
@ -318,6 +333,7 @@ const UserService = {
login: login,
getAll: getAllUsersService,
getFromId: getUserFromIdService,
getByEmail: getByEmailService,
edit: editUserService,
delete: deleteUserService,
};