From ddc0675d2e061b2ca2fb37a42fce9ff7524a7941 Mon Sep 17 00:00:00 2001 From: Daniel Date: Tue, 4 Jul 2023 00:13:53 +0330 Subject: [PATCH] made the email field case-insensitive --- lib/api/controllers/collections/postCollection.ts | 2 +- lib/api/controllers/collections/updateCollection.ts | 2 +- lib/api/controllers/users/getUsers.ts | 4 ++-- lib/api/controllers/users/updateUser.ts | 2 +- lib/client/addMemberToCollection.ts | 8 +++++--- lib/client/getPublicUserDataByEmail.ts | 4 +++- pages/api/auth/[...nextauth].ts | 6 +++--- pages/api/auth/register.ts | 4 ++-- pages/api/avatar/[id].ts | 2 +- 9 files changed, 19 insertions(+), 15 deletions(-) diff --git a/lib/api/controllers/collections/postCollection.ts b/lib/api/controllers/collections/postCollection.ts index c6735e4..6229a86 100644 --- a/lib/api/controllers/collections/postCollection.ts +++ b/lib/api/controllers/collections/postCollection.ts @@ -42,7 +42,7 @@ export default async function postCollection( color: collection.color, members: { create: collection.members.map((e) => ({ - user: { connect: { email: e.user.email } }, + user: { connect: { email: e.user.email.toLowerCase() } }, canCreate: e.canCreate, canUpdate: e.canUpdate, canDelete: e.canDelete, diff --git a/lib/api/controllers/collections/updateCollection.ts b/lib/api/controllers/collections/updateCollection.ts index b476eec..963027f 100644 --- a/lib/api/controllers/collections/updateCollection.ts +++ b/lib/api/controllers/collections/updateCollection.ts @@ -43,7 +43,7 @@ export default async function updateCollection( isPublic: collection.isPublic, members: { create: collection.members.map((e) => ({ - user: { connect: { email: e.user.email } }, + user: { connect: { email: e.user.email.toLowerCase() } }, canCreate: e.canCreate, canUpdate: e.canUpdate, canDelete: e.canDelete, diff --git a/lib/api/controllers/users/getUsers.ts b/lib/api/controllers/users/getUsers.ts index b587a27..17d9a0f 100644 --- a/lib/api/controllers/users/getUsers.ts +++ b/lib/api/controllers/users/getUsers.ts @@ -7,7 +7,7 @@ export default async function getUser( ) { const user = await prisma.user.findUnique({ where: { - email: lookupEmail, + email: lookupEmail.toLowerCase(), }, }); @@ -16,7 +16,7 @@ export default async function getUser( if ( !isSelf && user?.isPrivate && - !user.whitelistedUsers.includes(userEmail) + !user.whitelistedUsers.includes(userEmail.toLowerCase()) ) { return { response: "This profile is private.", status: 401 }; } diff --git a/lib/api/controllers/users/updateUser.ts b/lib/api/controllers/users/updateUser.ts index 0838141..70b8686 100644 --- a/lib/api/controllers/users/updateUser.ts +++ b/lib/api/controllers/users/updateUser.ts @@ -72,7 +72,7 @@ export default async function updateUser( }, data: { name: user.name, - email: user.email, + email: user.email.toLowerCase(), isPrivate: user.isPrivate, whitelistedUsers: user.whitelistedUsers, }, diff --git a/lib/client/addMemberToCollection.ts b/lib/client/addMemberToCollection.ts index a3f831b..608bbee 100644 --- a/lib/client/addMemberToCollection.ts +++ b/lib/client/addMemberToCollection.ts @@ -9,8 +9,8 @@ const addMemberToCollection = async ( setMember: (newMember: Member) => null | undefined ) => { const checkIfMemberAlreadyExists = collection.members.find((e) => { - const email = e.user.email; - return email === memberEmail; + const email = e.user.email.toLowerCase(); + return email === memberEmail.toLowerCase(); }); if ( @@ -22,7 +22,9 @@ const addMemberToCollection = async ( memberEmail.trim() !== ownerEmail ) { // Lookup, get data/err, list ... - const user = await getPublicUserDataByEmail(memberEmail.trim()); + const user = await getPublicUserDataByEmail( + memberEmail.trim().toLowerCase() + ); if (user.email) { setMember({ diff --git a/lib/client/getPublicUserDataByEmail.ts b/lib/client/getPublicUserDataByEmail.ts index 3a34ae1..7829ab1 100644 --- a/lib/client/getPublicUserDataByEmail.ts +++ b/lib/client/getPublicUserDataByEmail.ts @@ -1,7 +1,9 @@ import { toast } from "react-hot-toast"; export default async function getPublicUserDataByEmail(email: string) { - const response = await fetch(`/api/routes/users?email=${email}`); + const response = await fetch( + `/api/routes/users?email=${email.toLowerCase()}` + ); const data = await response.json(); diff --git a/pages/api/auth/[...nextauth].ts b/pages/api/auth/[...nextauth].ts index 6f91ca6..c950295 100644 --- a/pages/api/auth/[...nextauth].ts +++ b/pages/api/auth/[...nextauth].ts @@ -21,7 +21,7 @@ export const authOptions: AuthOptions = { const findUser = await prisma.user.findFirst({ where: { - email: email, + email: email.toLowerCase(), }, }); @@ -35,7 +35,7 @@ export const authOptions: AuthOptions = { return { id: findUser?.id, name: findUser?.name, - email: findUser?.email, + email: findUser?.email.toLowerCase(), }; } else return null as any; }, @@ -55,7 +55,7 @@ export const authOptions: AuthOptions = { if (trigger === "update" && session?.name && session?.email) { // Note, that `session` can be any arbitrary object, remember to validate it! token.name = session.name; - token.email = session.email; + token.email = session.email.toLowerCase(); } return token; }, diff --git a/pages/api/auth/register.ts b/pages/api/auth/register.ts index 01fedf5..17a1a59 100644 --- a/pages/api/auth/register.ts +++ b/pages/api/auth/register.ts @@ -25,7 +25,7 @@ export default async function Index( const checkIfUserExists = await prisma.user.findFirst({ where: { - email: body.email, + email: body.email.toLowerCase(), }, }); @@ -37,7 +37,7 @@ export default async function Index( await prisma.user.create({ data: { name: body.name, - email: body.email, + email: body.email.toLowerCase(), password: hashedPassword, }, }); diff --git a/pages/api/avatar/[id].ts b/pages/api/avatar/[id].ts index dd129ea..23521f4 100644 --- a/pages/api/avatar/[id].ts +++ b/pages/api/avatar/[id].ts @@ -8,7 +8,7 @@ export default async function Index(req: NextApiRequest, res: NextApiResponse) { const session = await getServerSession(req, res, authOptions); const userId = session?.user.id; - const userEmail = session?.user.email; + const userEmail = session?.user.email?.toLowerCase(); const queryId = Number(req.query.id); if (!queryId)