diff --git a/messages/en.json b/messages/en.json index b3c3fd1..0001fa1 100644 --- a/messages/en.json +++ b/messages/en.json @@ -1,11 +1,17 @@ { "$schema": "https://inlang.com/schema/inlang-message-format", - "greeting": "Hello {name}!", - "email_required": "Email is required", - "password_required": "Password is required", - "name_required": "Name is required", - "email_incorrect": "Email is incorrect", - "password_incorrect": "Password is incorrect", - "email_inuse": "Email is already in use", - "user_not_found": "The user could not be found" -} + "nav_greeting": "Hello {name}!", + "login_tab_login": "Login", + "login_tab_register": "Register", + "login_label_email": "Email", + "login_label_password": "Password", + "login_label_name": "Name", + "login_button_submit": "Submit", + "login_error_email_required": "Email is required", + "login_error_password_required": "Password is required", + "login_error_name_required": "Name is required", + "login_error_email_incorrect": "Email is incorrect", + "login_error_password_incorrect": "Password is incorrect", + "login_error_email_inuse": "Email is already in use", + "login_error_user_not_found": "The user could not be found" +} \ No newline at end of file diff --git a/src/lib/components/Navigation/Navbar/Navbar.svelte b/src/lib/components/Navigation/Navbar/Navbar.svelte index 4b989d8..aefd4a3 100644 --- a/src/lib/components/Navigation/Navbar/Navbar.svelte +++ b/src/lib/components/Navigation/Navbar/Navbar.svelte @@ -3,7 +3,7 @@ let { title, username }: { title: string; username: string } = $props(); - let message = $derived(messages.greeting({ name: username })); + let message = $derived(messages.nav_greeting({ name: username })); + \ No newline at end of file diff --git a/src/routes/login/+page.server.ts b/src/routes/login/+page.server.ts index e703154..9c2a5c8 100644 --- a/src/routes/login/+page.server.ts +++ b/src/routes/login/+page.server.ts @@ -1,5 +1,4 @@ import { messages } from '$lib/i18n'; -import { email_inuse } from '$lib/paraglide/messages'; import { logger } from '$lib/server/logger'; import { auth } from '$lib/server/lucia.js'; import { prisma } from '$lib/server/prisma'; @@ -12,12 +11,12 @@ export const actions = { const form = await event.request.formData(); const email = form.get('email'); if (typeof email !== 'string') { - return fail(400, { email: { error: messages.email_required() } }); + return fail(400, { email: { error: messages.login_error_email_required() } }); } const password = form.get('password') as string; if (!password) { - return fail(400, { password: { error: messages.password_required() } }); + return fail(400, { password: { error: messages.login_error_password_required() } }); } const user = await prisma.user.findUnique({ @@ -27,13 +26,15 @@ export const actions = { }); if (!user) { logger.error(`User not found! ${email}`); - return fail(404, { email: { value: email, error: messages.user_not_found() } }); + return fail(404, { + email: { value: email, error: messages.login_error_user_not_found() }, + }); } const validPassword = await new Argon2id().verify(user.password, password); if (!validPassword) { return fail(400, { - password: { error: messages.password_incorrect() }, + password: { error: messages.login_error_password_incorrect() }, }); } const session = await auth.createSession(user.id, []); @@ -48,26 +49,30 @@ export const actions = { register: async (event) => { const form = await event.request.formData(); if (!form.has('email')) { - return fail(400, { email: { error: messages.email_required() } }); + return fail(400, { email: { error: messages.login_error_email_required() } }); } const { success, data: email, error } = string().email().safeParse(form.get('email')); if (!success) { logger.error(error); - return fail(400, { email: { value: email, error: messages.email_incorrect() } }); + return fail(400, { + email: { value: email, error: messages.login_error_email_incorrect() }, + }); } const password = form.get('password'); if (typeof password !== 'string') { - return fail(400, { password: { error: messages.password_required() } }); + return fail(400, { password: { error: messages.login_error_password_required() } }); } const name = form.get('name'); if (typeof name !== 'string') { - return fail(400, { name: { error: messages.name_required() } }); + return fail(400, { name: { error: messages.login_error_name_required() } }); } const usersWithEmail = await prisma.user.count({ where: { email: email } }); if (usersWithEmail !== 0) { - return fail(409, { email: { value: email, error: email_inuse() } }); + return fail(409, { + email: { value: email, error: messages.login_error_email_inuse() }, + }); } const hashedPassword = await new Argon2id().hash(password); @@ -88,4 +93,4 @@ export const actions = { redirect(303, '/'); }, -} satisfies Actions; +} satisfies Actions; \ No newline at end of file diff --git a/src/routes/login/+page.svelte b/src/routes/login/+page.svelte index 4978eaf..88aae76 100644 --- a/src/routes/login/+page.svelte +++ b/src/routes/login/+page.svelte @@ -2,6 +2,7 @@ import Button from '$lib/components/common/Button'; import TextInput from '$lib/components/common/TextInput'; import Tabs from '$lib/components/Navigation/Tabs'; + import { messages } from '$lib/i18n/index.js'; import { fade } from 'svelte/transition'; let { form } = $props(); @@ -31,19 +32,29 @@ {#snippet Form(variant: 'login' | 'register')}
- + {#if variant === 'register'} - + {/if}
-
{/snippet} @@ -54,7 +65,11 @@ {#if form} {@render alert(Object.values(form)[0].error)} {/if} - + {@render Form(tab === 0 ? 'login' : 'register')} @@ -64,4 +79,4 @@ .page { @apply flex flex-col items-center justify-around gap-24 py-[10%]; } - + \ No newline at end of file