diff --git a/src/v2/routes/auth/login.ts b/src/v2/routes/auth/login.ts index 8db0fb39..a3f20bef 100644 --- a/src/v2/routes/auth/login.ts +++ b/src/v2/routes/auth/login.ts @@ -10,43 +10,34 @@ const usernameThrottling = new Map< >() const LoginSchema = z.object({ - username: z - .string({ - required_error: "Username is required", - invalid_type_error: "Username must be a string", - }) - .min(3, "Username must be at least 3 characters long") - .max(32, "Username must be at most 32 characters long"), - password: z - .string({ - required_error: "Password is required", - invalid_type_error: "Password must be a string", - }) - .regex(new RegExp(".*[A-Z].*"), "One uppercase character is required") - .regex(new RegExp(".*[a-z].*"), "One lowercase character is required") - .regex(new RegExp(".*\\d.*"), "One number is required") - .regex( - new RegExp(".*[`~<>?,./!@#$%^&*()\\-_+=\"'|{}\\[\\];:\\\\].*"), - "One special character is required" - ) - .min(8, "Password must be at least 8 characters long") - .max(128, "Password must be at most 128 characters long"), + username: z.string({ + required_error: "Username is required", + invalid_type_error: "Username must be a string", + }), + password: z.string({ + required_error: "Password is required", + invalid_type_error: "Password must be a string", + }), }) export async function login(c: APIContext): Promise { - const formData = LoginSchema.safeParse(await c.req.formData()) + const formData = LoginSchema.safeParse( + await c.req.formData().then((formData) => { + const data = Object.fromEntries(formData.entries()) + return data + }) + ) if (!formData.success) { + console.log(formData) return c.json({ success: false, state: "invalid data" }, 400) } const { username, password } = formData.data const validSession = await auth(c.env).handleRequest(c).validate() - - if (validSession) { + if (validSession) return c.json({ success: false, state: "already logged in" }, 200) - } const storedThrottling = usernameThrottling.get(username) const timeoutUntil = storedThrottling?.timeoutUntil ?? 0 diff --git a/src/v2/routes/auth/signup.ts b/src/v2/routes/auth/signup.ts index 7a90f09b..4a3b9238 100644 --- a/src/v2/routes/auth/signup.ts +++ b/src/v2/routes/auth/signup.ts @@ -70,7 +70,12 @@ const CreateAccountSchema = z }) export async function signup(c: APIContext): Promise { - const formData = CreateAccountSchema.safeParse(await c.req.formData()) + const formData = CreateAccountSchema.safeParse( + await c.req.formData().then((formData) => { + const data = Object.fromEntries(formData.entries()) + return data + }) + ) if (!formData.success) { return c.json({ success: false, state: "invalid data" }, 400) diff --git a/src/v2/routes/auth/user-attributes/updateUserAttributes.ts b/src/v2/routes/auth/user-attributes/updateUserAttributes.ts index 56964a30..2a8d0c71 100644 --- a/src/v2/routes/auth/user-attributes/updateUserAttributes.ts +++ b/src/v2/routes/auth/user-attributes/updateUserAttributes.ts @@ -2,6 +2,7 @@ import { auth } from "@/v2/lib/auth/lucia" import { z } from "zod" type UserAttributes = { + display_name?: string username?: string pronouns?: string self_assignable_role_flags?: number @@ -10,6 +11,11 @@ type UserAttributes = { const UpdateUserAttributesSchema = z .object({ + display_name: z + .string({ + invalid_type_error: "Display name must be a string", + }) + .optional(), username: z .string({ invalid_type_error: "Username must be a string", @@ -56,6 +62,7 @@ export async function updateUserAttributes(c: APIContext): Promise { } const attributes: UserAttributes = { + display_name: formData.data.display_name, username: formData.data.username, pronouns: formData.data.pronouns, self_assignable_role_flags: formData.data.self_assignable_roles, diff --git a/src/v2/routes/search/searchRoutes.ts b/src/v2/routes/search/searchRoutes.ts index 3546c726..443da029 100644 --- a/src/v2/routes/search/searchRoutes.ts +++ b/src/v2/routes/search/searchRoutes.ts @@ -17,7 +17,7 @@ authRoute.use( "/all/:query", cors({ credentials: true, - origin: ["*"], // TODO: update this - temporary + origin: ["http://localhost:3000"], // TODO: update this - temporary }) ) @@ -25,7 +25,7 @@ authRoute.use( "/users/user/:username", cors({ credentials: true, - origin: ["*"], // TODO: update this - temporary + origin: ["http://localhost:3000"], // TODO: update this - temporary }) )