made the email field case-insensitive

This commit is contained in:
Daniel 2023-07-04 00:13:53 +03:30
parent ae1682ad55
commit ddc0675d2e
9 changed files with 19 additions and 15 deletions

View File

@ -42,7 +42,7 @@ export default async function postCollection(
color: collection.color, color: collection.color,
members: { members: {
create: collection.members.map((e) => ({ create: collection.members.map((e) => ({
user: { connect: { email: e.user.email } }, user: { connect: { email: e.user.email.toLowerCase() } },
canCreate: e.canCreate, canCreate: e.canCreate,
canUpdate: e.canUpdate, canUpdate: e.canUpdate,
canDelete: e.canDelete, canDelete: e.canDelete,

View File

@ -43,7 +43,7 @@ export default async function updateCollection(
isPublic: collection.isPublic, isPublic: collection.isPublic,
members: { members: {
create: collection.members.map((e) => ({ create: collection.members.map((e) => ({
user: { connect: { email: e.user.email } }, user: { connect: { email: e.user.email.toLowerCase() } },
canCreate: e.canCreate, canCreate: e.canCreate,
canUpdate: e.canUpdate, canUpdate: e.canUpdate,
canDelete: e.canDelete, canDelete: e.canDelete,

View File

@ -7,7 +7,7 @@ export default async function getUser(
) { ) {
const user = await prisma.user.findUnique({ const user = await prisma.user.findUnique({
where: { where: {
email: lookupEmail, email: lookupEmail.toLowerCase(),
}, },
}); });
@ -16,7 +16,7 @@ export default async function getUser(
if ( if (
!isSelf && !isSelf &&
user?.isPrivate && user?.isPrivate &&
!user.whitelistedUsers.includes(userEmail) !user.whitelistedUsers.includes(userEmail.toLowerCase())
) { ) {
return { response: "This profile is private.", status: 401 }; return { response: "This profile is private.", status: 401 };
} }

View File

@ -72,7 +72,7 @@ export default async function updateUser(
}, },
data: { data: {
name: user.name, name: user.name,
email: user.email, email: user.email.toLowerCase(),
isPrivate: user.isPrivate, isPrivate: user.isPrivate,
whitelistedUsers: user.whitelistedUsers, whitelistedUsers: user.whitelistedUsers,
}, },

View File

@ -9,8 +9,8 @@ const addMemberToCollection = async (
setMember: (newMember: Member) => null | undefined setMember: (newMember: Member) => null | undefined
) => { ) => {
const checkIfMemberAlreadyExists = collection.members.find((e) => { const checkIfMemberAlreadyExists = collection.members.find((e) => {
const email = e.user.email; const email = e.user.email.toLowerCase();
return email === memberEmail; return email === memberEmail.toLowerCase();
}); });
if ( if (
@ -22,7 +22,9 @@ const addMemberToCollection = async (
memberEmail.trim() !== ownerEmail memberEmail.trim() !== ownerEmail
) { ) {
// Lookup, get data/err, list ... // Lookup, get data/err, list ...
const user = await getPublicUserDataByEmail(memberEmail.trim()); const user = await getPublicUserDataByEmail(
memberEmail.trim().toLowerCase()
);
if (user.email) { if (user.email) {
setMember({ setMember({

View File

@ -1,7 +1,9 @@
import { toast } from "react-hot-toast"; import { toast } from "react-hot-toast";
export default async function getPublicUserDataByEmail(email: string) { 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(); const data = await response.json();

View File

@ -21,7 +21,7 @@ export const authOptions: AuthOptions = {
const findUser = await prisma.user.findFirst({ const findUser = await prisma.user.findFirst({
where: { where: {
email: email, email: email.toLowerCase(),
}, },
}); });
@ -35,7 +35,7 @@ export const authOptions: AuthOptions = {
return { return {
id: findUser?.id, id: findUser?.id,
name: findUser?.name, name: findUser?.name,
email: findUser?.email, email: findUser?.email.toLowerCase(),
}; };
} else return null as any; } else return null as any;
}, },
@ -55,7 +55,7 @@ export const authOptions: AuthOptions = {
if (trigger === "update" && session?.name && session?.email) { if (trigger === "update" && session?.name && session?.email) {
// Note, that `session` can be any arbitrary object, remember to validate it! // Note, that `session` can be any arbitrary object, remember to validate it!
token.name = session.name; token.name = session.name;
token.email = session.email; token.email = session.email.toLowerCase();
} }
return token; return token;
}, },

View File

@ -25,7 +25,7 @@ export default async function Index(
const checkIfUserExists = await prisma.user.findFirst({ const checkIfUserExists = await prisma.user.findFirst({
where: { where: {
email: body.email, email: body.email.toLowerCase(),
}, },
}); });
@ -37,7 +37,7 @@ export default async function Index(
await prisma.user.create({ await prisma.user.create({
data: { data: {
name: body.name, name: body.name,
email: body.email, email: body.email.toLowerCase(),
password: hashedPassword, password: hashedPassword,
}, },
}); });

View File

@ -8,7 +8,7 @@ export default async function Index(req: NextApiRequest, res: NextApiResponse) {
const session = await getServerSession(req, res, authOptions); const session = await getServerSession(req, res, authOptions);
const userId = session?.user.id; const userId = session?.user.id;
const userEmail = session?.user.email; const userEmail = session?.user.email?.toLowerCase();
const queryId = Number(req.query.id); const queryId = Number(req.query.id);
if (!queryId) if (!queryId)