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