many improvements
This commit is contained in:
@@ -126,11 +126,20 @@ export const authOptions: AuthOptions = {
|
||||
if (trigger === "signIn") {
|
||||
token.id = user.id;
|
||||
token.username = (user as any).username;
|
||||
} else if (trigger === "update" && session?.name && session?.username) {
|
||||
// Note, that `session` can be any arbitrary object, remember to validate it!
|
||||
token.name = session.name;
|
||||
token.username = session.username.toLowerCase();
|
||||
token.email = session.email.toLowerCase();
|
||||
} else if (trigger === "update" && token.id) {
|
||||
console.log(token);
|
||||
|
||||
const user = await prisma.user.findUnique({
|
||||
where: {
|
||||
id: token.id as number,
|
||||
},
|
||||
});
|
||||
|
||||
if (user) {
|
||||
token.name = user.name;
|
||||
token.username = user.username?.toLowerCase();
|
||||
token.email = user.email?.toLowerCase();
|
||||
}
|
||||
}
|
||||
return token;
|
||||
},
|
||||
|
||||
@@ -11,7 +11,7 @@ interface Data {
|
||||
|
||||
interface User {
|
||||
name: string;
|
||||
username: string;
|
||||
username?: string;
|
||||
email?: string;
|
||||
password: string;
|
||||
}
|
||||
@@ -23,7 +23,7 @@ export default async function Index(
|
||||
const body: User = req.body;
|
||||
|
||||
const checkHasEmptyFields = emailEnabled
|
||||
? !body.username || !body.password || !body.name || !body.email
|
||||
? !body.password || !body.name || !body.email
|
||||
: !body.username || !body.password || !body.name;
|
||||
|
||||
if (checkHasEmptyFields)
|
||||
@@ -31,30 +31,9 @@ export default async function Index(
|
||||
.status(400)
|
||||
.json({ response: "Please fill out all the fields." });
|
||||
|
||||
const tenMinutesAgo = new Date(Date.now() - 10 * 60 * 1000);
|
||||
|
||||
// Remove user's who aren't verified for more than 10 minutes
|
||||
if (emailEnabled)
|
||||
await prisma.user.deleteMany({
|
||||
where: {
|
||||
OR: [
|
||||
{
|
||||
email: body.email,
|
||||
},
|
||||
{
|
||||
username: body.username,
|
||||
},
|
||||
],
|
||||
createdAt: {
|
||||
lt: tenMinutesAgo,
|
||||
},
|
||||
emailVerified: null,
|
||||
},
|
||||
});
|
||||
|
||||
const checkUsername = RegExp("^[a-z0-9_-]{3,31}$");
|
||||
|
||||
if (!checkUsername.test(body.username))
|
||||
if (!emailEnabled && !checkUsername.test(body.username || ""))
|
||||
return res.status(400).json({
|
||||
response:
|
||||
"Username has to be between 3-30 characters, no spaces and special characters are allowed.",
|
||||
@@ -63,18 +42,11 @@ export default async function Index(
|
||||
const checkIfUserExists = await prisma.user.findFirst({
|
||||
where: emailEnabled
|
||||
? {
|
||||
OR: [
|
||||
{
|
||||
username: body.username.toLowerCase(),
|
||||
},
|
||||
{
|
||||
email: body.email?.toLowerCase(),
|
||||
},
|
||||
],
|
||||
email: body.email?.toLowerCase(),
|
||||
emailVerified: { not: null },
|
||||
}
|
||||
: {
|
||||
username: body.username.toLowerCase(),
|
||||
username: (body.username as string).toLowerCase(),
|
||||
},
|
||||
});
|
||||
|
||||
@@ -86,8 +58,10 @@ export default async function Index(
|
||||
await prisma.user.create({
|
||||
data: {
|
||||
name: body.name,
|
||||
username: body.username.toLowerCase(),
|
||||
email: body.email?.toLowerCase(),
|
||||
username: emailEnabled
|
||||
? undefined
|
||||
: (body.username as string).toLowerCase(),
|
||||
email: emailEnabled ? body.email?.toLowerCase() : undefined,
|
||||
password: hashedPassword,
|
||||
},
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user