diff --git a/frontend/src/lib/components/UserIcon.svelte b/frontend/src/lib/components/UserIcon.svelte index 0446c67..9744c71 100644 --- a/frontend/src/lib/components/UserIcon.svelte +++ b/frontend/src/lib/components/UserIcon.svelte @@ -36,10 +36,10 @@ { - goto('/profile') + goto('/settings') onClick() }}> - Profile + Settings { const user = event.locals.userObject return { - shortener_url: process.env.PUBLIC_SHORTENER_URL ?? 's.tzgyn.com', + shortener_url: + process.env.PUBLIC_SHORTENER_URL ?? '3000.tzgyn.com', user: user, } }) satisfies LayoutServerLoad diff --git a/frontend/src/routes/(app)/settings/(components)/sidebar-nav.svelte b/frontend/src/routes/(app)/settings/(components)/sidebar-nav.svelte new file mode 100644 index 0000000..e54f656 --- /dev/null +++ b/frontend/src/routes/(app)/settings/(components)/sidebar-nav.svelte @@ -0,0 +1,28 @@ + + + diff --git a/frontend/src/routes/(app)/settings/+layout.svelte b/frontend/src/routes/(app)/settings/+layout.svelte new file mode 100644 index 0000000..d576da4 --- /dev/null +++ b/frontend/src/routes/(app)/settings/+layout.svelte @@ -0,0 +1,34 @@ + + +
+
+

Settings

+

+ Manage your account settings and set e-mail preferences. +

+
+ +
+ +
+ +
+
+
diff --git a/frontend/src/routes/(app)/settings/+page.svelte b/frontend/src/routes/(app)/settings/+page.svelte new file mode 100644 index 0000000..6dbe5c9 --- /dev/null +++ b/frontend/src/routes/(app)/settings/+page.svelte @@ -0,0 +1,15 @@ + + +
+
+

Profile

+

+ This is how others will see you on the site. +

+
+ +
diff --git a/frontend/src/routes/(app)/settings/account/+page.svelte b/frontend/src/routes/(app)/settings/account/+page.svelte new file mode 100644 index 0000000..941e422 --- /dev/null +++ b/frontend/src/routes/(app)/settings/account/+page.svelte @@ -0,0 +1,94 @@ + + +
+
+

Account

+

+ Update your account settings. +

+
+ + +
+ + +

Change your username.

+
+ +
+ + +

Change your email.

+
+ + + +
+ + +

+ Enter your old password in order to change it. +

+
+ +
+ + +

Change your password.

+
+ + +
diff --git a/frontend/src/routes/api/account/+server.ts b/frontend/src/routes/api/account/+server.ts new file mode 100644 index 0000000..c4d3a30 --- /dev/null +++ b/frontend/src/routes/api/account/+server.ts @@ -0,0 +1,29 @@ +import { db } from '$lib/db' +import { user } from '$lib/db/schema' +import { userUpdateSchema } from '$lib/server/types' +import { eq } from 'drizzle-orm' +import type { RequestHandler } from './$types' + +export const GET: RequestHandler = async () => { + return new Response() +} + +export const PUT: RequestHandler = async (event) => { + const body = await event.request.json() + const userId = event.locals.userObject.id + + const userUpdateData = userUpdateSchema.safeParse(body) + + if (!userUpdateData.success) { + return new Response(JSON.stringify({ success: false })) + } + + await db + .update(user) + .set({ + username: userUpdateData.data.username, + }) + .where(eq(user.id, userId)) + + return new Response(JSON.stringify({ success: true })) +}