diff --git a/src/modules/auth/controller/loginWithPassword.controller.ts b/src/modules/auth/controller/loginWithPassword.controller.ts index bd748e5..595947b 100644 --- a/src/modules/auth/controller/loginWithPassword.controller.ts +++ b/src/modules/auth/controller/loginWithPassword.controller.ts @@ -11,6 +11,10 @@ export const loginWithPassword = async ( if (error || !ctx.body) return returnErrorResponse(ctx.set, 400, "Invalid user input", error); - const result = await loginWithPasswordService(ctx.body); - return result; + try { + const result = await loginWithPasswordService(ctx.body); + return result; + } catch (error) { + return error; + } }; diff --git a/src/modules/auth/services/loginWithPassword.service.ts b/src/modules/auth/services/loginWithPassword.service.ts index 9e7e9ed..9cd0f86 100644 --- a/src/modules/auth/services/loginWithPassword.service.ts +++ b/src/modules/auth/services/loginWithPassword.service.ts @@ -1,9 +1,13 @@ +import { findUserByEmailOrUsernameService } from "../../user/services/findUserByEmailOrUsername.service"; import { LoginWithPasswordRequest } from "../auth.types"; export const loginWithPasswordService = async ( data: LoginWithPasswordRequest ) => { - return `Login with password service called with data: ${JSON.stringify( - data - )}`; + try { + const userData = await findUserByEmailOrUsernameService(data.identifier); + return userData; + } catch (error) { + throw error; + } }; diff --git a/src/modules/user/repositories/findUserByEmailOrUsername.repository.ts b/src/modules/user/repositories/findUserByEmailOrUsername.repository.ts new file mode 100644 index 0000000..66fb782 --- /dev/null +++ b/src/modules/user/repositories/findUserByEmailOrUsername.repository.ts @@ -0,0 +1,35 @@ +import { userModel } from "../user.model"; + +export const findUserByEmailOrUsernameRepo = async (identifier: string) => { + const userData = + (await userModel.findUnique({ + where: { email: identifier }, + include: { + roles: { + omit: { + createdBy: true, + createdAt: true, + updatedAt: true, + deletedAt: true, + }, + }, + }, + })) || + (await userModel.findUnique({ + where: { username: identifier }, + include: { + roles: { + omit: { + createdBy: true, + createdAt: true, + updatedAt: true, + deletedAt: true, + }, + }, + }, + })); + + if (!userData) throw "User not found"; + + return userData; +}; diff --git a/src/modules/user/services/findUserByEmailOrUsername.service.ts b/src/modules/user/services/findUserByEmailOrUsername.service.ts new file mode 100644 index 0000000..06d977d --- /dev/null +++ b/src/modules/user/services/findUserByEmailOrUsername.service.ts @@ -0,0 +1,10 @@ +import { findUserByEmailOrUsernameRepo } from "../repositories/findUserByEmailOrUsername.repository"; + +export const findUserByEmailOrUsernameService = async (identifier: string) => { + try { + const userData = await findUserByEmailOrUsernameRepo(identifier); + return userData; + } catch (error) { + throw error; + } +}; diff --git a/src/modules/user/user.repository.ts b/src/modules/user/user.repository.ts deleted file mode 100644 index e69de29..0000000