diff --git a/packages/hoppscotch-backend/src/admin/admin.service.spec.ts b/packages/hoppscotch-backend/src/admin/admin.service.spec.ts index a7ebc0682..3cee03e96 100644 --- a/packages/hoppscotch-backend/src/admin/admin.service.spec.ts +++ b/packages/hoppscotch-backend/src/admin/admin.service.spec.ts @@ -121,6 +121,7 @@ describe('AdminService', () => { NOT: { inviteeEmail: { in: [dbAdminUsers[0].email], + mode: 'insensitive', }, }, }, @@ -229,7 +230,10 @@ describe('AdminService', () => { expect(mockPrisma.invitedUsers.deleteMany).toHaveBeenCalledWith({ where: { - inviteeEmail: { in: [invitedUsers[0].inviteeEmail] }, + inviteeEmail: { + in: [invitedUsers[0].inviteeEmail], + mode: 'insensitive', + }, }, }); expect(result).toEqualRight(true); diff --git a/packages/hoppscotch-backend/src/admin/admin.service.ts b/packages/hoppscotch-backend/src/admin/admin.service.ts index 0bed66132..982b7c79a 100644 --- a/packages/hoppscotch-backend/src/admin/admin.service.ts +++ b/packages/hoppscotch-backend/src/admin/admin.service.ts @@ -89,12 +89,17 @@ export class AdminService { adminEmail: string, inviteeEmail: string, ) { - if (inviteeEmail == adminEmail) return E.left(DUPLICATE_EMAIL); + if (inviteeEmail.toLowerCase() == adminEmail.toLowerCase()) { + return E.left(DUPLICATE_EMAIL); + } if (!validateEmail(inviteeEmail)) return E.left(INVALID_EMAIL); const alreadyInvitedUser = await this.prisma.invitedUsers.findFirst({ where: { - inviteeEmail: inviteeEmail, + inviteeEmail: { + equals: inviteeEmail, + mode: 'insensitive', + }, }, }); if (alreadyInvitedUser != null) return E.left(USER_ALREADY_INVITED); @@ -159,7 +164,7 @@ export class AdminService { try { await this.prisma.invitedUsers.deleteMany({ where: { - inviteeEmail: { in: inviteeEmails }, + inviteeEmail: { in: inviteeEmails, mode: 'insensitive' }, }, }); return E.right(true); @@ -189,6 +194,7 @@ export class AdminService { NOT: { inviteeEmail: { in: userEmailObjs.map((user) => user.email), + mode: 'insensitive', }, }, }, diff --git a/packages/hoppscotch-backend/src/shortcode/shortcode.service.ts b/packages/hoppscotch-backend/src/shortcode/shortcode.service.ts index e6a02fdb1..e86423053 100644 --- a/packages/hoppscotch-backend/src/shortcode/shortcode.service.ts +++ b/packages/hoppscotch-backend/src/shortcode/shortcode.service.ts @@ -299,7 +299,10 @@ export class ShortcodeService implements UserDataHandler, OnModuleInit { where: userEmail ? { User: { - email: userEmail, + email: { + equals: userEmail, + mode: 'insensitive', + }, }, } : undefined, diff --git a/packages/hoppscotch-backend/src/team-invitation/team-invitation.service.ts b/packages/hoppscotch-backend/src/team-invitation/team-invitation.service.ts index f7749070f..db2927499 100644 --- a/packages/hoppscotch-backend/src/team-invitation/team-invitation.service.ts +++ b/packages/hoppscotch-backend/src/team-invitation/team-invitation.service.ts @@ -75,12 +75,13 @@ export class TeamInvitationService { if (!isEmailValid) return E.left(INVALID_EMAIL); try { - const teamInvite = await this.prisma.teamInvitation.findUniqueOrThrow({ + const teamInvite = await this.prisma.teamInvitation.findFirstOrThrow({ where: { - teamID_inviteeEmail: { - inviteeEmail: inviteeEmail, - teamID: teamID, + inviteeEmail: { + equals: inviteeEmail, + mode: 'insensitive', }, + teamID, }, }); diff --git a/packages/hoppscotch-backend/src/user/user.service.spec.ts b/packages/hoppscotch-backend/src/user/user.service.spec.ts index b5093831c..26f56780c 100644 --- a/packages/hoppscotch-backend/src/user/user.service.spec.ts +++ b/packages/hoppscotch-backend/src/user/user.service.spec.ts @@ -149,7 +149,7 @@ beforeEach(() => { describe('UserService', () => { describe('findUserByEmail', () => { test('should successfully return a valid user given a valid email', async () => { - mockPrisma.user.findUniqueOrThrow.mockResolvedValueOnce(user); + mockPrisma.user.findFirst.mockResolvedValueOnce(user); const result = await userService.findUserByEmail( 'dwight@dundermifflin.com', @@ -158,7 +158,7 @@ describe('UserService', () => { }); test('should return a null user given a invalid email', async () => { - mockPrisma.user.findUniqueOrThrow.mockRejectedValueOnce('NotFoundError'); + mockPrisma.user.findFirst.mockResolvedValueOnce(null); const result = await userService.findUserByEmail('jim@dundermifflin.com'); expect(result).resolves.toBeNone; diff --git a/packages/hoppscotch-backend/src/user/user.service.ts b/packages/hoppscotch-backend/src/user/user.service.ts index 26018894b..6a53f8a99 100644 --- a/packages/hoppscotch-backend/src/user/user.service.ts +++ b/packages/hoppscotch-backend/src/user/user.service.ts @@ -62,16 +62,16 @@ export class UserService { * @returns Option of found User */ async findUserByEmail(email: string): Promise> { - try { - const user = await this.prisma.user.findUniqueOrThrow({ - where: { - email: email, + const user = await this.prisma.user.findFirst({ + where: { + email: { + equals: email, + mode: 'insensitive', }, - }); - return O.some(user); - } catch (error) { - return O.none; - } + }, + }); + if (!user) return O.none; + return O.some(user); } /**