diff --git a/src/routes/login/+page.server.ts b/src/routes/login/+page.server.ts index f3a1563..4f8cc12 100644 --- a/src/routes/login/+page.server.ts +++ b/src/routes/login/+page.server.ts @@ -31,7 +31,7 @@ export const actions: Actions = { typeof username !== "string" || username.length < 3 || username.length > 31 || - !/^[a-z0-9_-]+$/.test(username) + !/^[a-zA-Z0-9_-]+$/.test(username) ) { return error(400, { message: "Invalid username", @@ -47,7 +47,7 @@ export const actions: Actions = { }); } - const existingUser:any = await db + const existingUser: any = await db .select() .from(userTable) .where(eq(userTable.username, username)) @@ -86,6 +86,5 @@ export const actions: Actions = { }); return redirect(302, "/"); - }, }; diff --git a/src/routes/settings/admin/+page.svelte b/src/routes/settings/admin/+page.svelte index db97cb6..80d56fd 100644 --- a/src/routes/settings/admin/+page.svelte +++ b/src/routes/settings/admin/+page.svelte @@ -73,7 +73,7 @@
diff --git a/src/routes/signup/+page.server.ts b/src/routes/signup/+page.server.ts index 0256749..849c4ef 100644 --- a/src/routes/signup/+page.server.ts +++ b/src/routes/signup/+page.server.ts @@ -6,10 +6,17 @@ import { Argon2id } from "oslo/password"; import { db } from "$lib/db/db.server"; import type { DatabaseUser } from "$lib/server/auth"; -import type { Actions } from "./$types"; +import type { Actions, PageServerLoad } from "./$types"; import { userTable } from "$lib/db/schema"; import { eq } from "drizzle-orm"; +export const load: PageServerLoad = async (event) => { + if (event.locals.user) { + return redirect(302, "/"); + } + return {}; +}; + export const actions: Actions = { default: async (event) => { const formData = await event.request.formData(); @@ -17,10 +24,12 @@ export const actions: Actions = { const password = formData.get("password"); const firstName = formData.get("first_name"); const lastName = formData.get("last_name"); - let role: string = ""; // username must be between 4 ~ 31 characters, and only consists of lowercase letters, 0-9, -, and _ // keep in mind some database (e.g. mysql) are case insensitive + if (event.locals.user) { + return redirect(302, "/"); + } // check all to make sure all fields are provided if (!username || !password || !firstName || !lastName) { return error(400, { @@ -28,20 +37,11 @@ export const actions: Actions = { }); } - if (!event.locals.user) { - role = "user"; - } - - if (event.locals.user && event.locals.user.role === "admin") { - const isAdmin = formData.get("role") === "on"; - role = isAdmin ? "admin" : "user"; - } - if ( typeof username !== "string" || username.length < 3 || username.length > 31 || - !/^[a-z0-9_-]+$/.test(username) + !/^[a-zA-Z0-9_-]+$/.test(username) ) { return error(400, { message: "Invalid username", @@ -102,36 +102,18 @@ export const actions: Actions = { last_name: lastName, hashed_password: hashedPassword, signup_date: new Date(), - role: role, + role: "user", last_login: new Date(), } as DatabaseUser) .execute(); - if (!event.locals.user) { - const session = await lucia.createSession(userId, {}); - const sessionCookie = lucia.createSessionCookie(session.id); - event.cookies.set(sessionCookie.name, sessionCookie.value, { - path: ".", - ...sessionCookie.attributes, - }); + const session = await lucia.createSession(userId, {}); + const sessionCookie = lucia.createSessionCookie(session.id); + event.cookies.set(sessionCookie.name, sessionCookie.value, { + path: ".", + ...sessionCookie.attributes, + }); - redirect(302, "/"); - } else { - if (event.locals.user && event.locals.user.role !== "admin") { - return error(403, { - message: "You are not authorized to add users", - }); - } - - return { - status: 200, - headers: { - "content-type": "application/json", - }, - body: JSON.stringify({ - message: "User date", - }), - }; - } + return redirect(302, "/"); }, }; diff --git a/src/routes/signup/+page.svelte b/src/routes/signup/+page.svelte index f650350..2c3b39c 100644 --- a/src/routes/signup/+page.svelte +++ b/src/routes/signup/+page.svelte @@ -1,15 +1,38 @@
- +
+ {#if errors.message} +
+ {errors.message} +
+ {/if} +
{#if quote != ""} @@ -62,7 +91,6 @@
-