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')}
{/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