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> {
|
||||
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,
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user