Release 0.2.0
This commit is contained in:
1 parent
7a49e66c37
commit
08e8875cb5
38 files changed
+2645
-93
No files matched your search
@@ -0,0 +1,36 @@
|
||||
import { fail, redirect } from '@sveltejs/kit';
|
||||
import type { Actions, PageServerLoad } from './$types';
|
||||
import {
|
||||
authenticate,
|
||||
createSession,
|
||||
hasUsers,
|
||||
reserveLoginAttempt,
|
||||
validEmail
|
||||
} from '#lib/server/auth.js';
|
||||
|
||||
export const load: PageServerLoad = ({ locals }) => {
|
||||
if (!hasUsers()) redirect(303, '/setup');
|
||||
if (locals.user) redirect(303, '/fundus');
|
||||
};
|
||||
|
||||
export const actions = {
|
||||
default: async ({ request, cookies, getClientAddress }) => {
|
||||
const data = await request.formData();
|
||||
const email = String(data.get('email') || '').trim();
|
||||
const password = String(data.get('password') || '');
|
||||
const address = getClientAddress();
|
||||
if (!validEmail(email) || !password || Buffer.byteLength(password, 'utf8') > 256) {
|
||||
return fail(400, { email, error: 'E-Mail oder Passwort ist nicht korrekt.' });
|
||||
}
|
||||
if (!reserveLoginAttempt(email, address)) {
|
||||
return fail(429, {
|
||||
email,
|
||||
error: 'Zu viele Anmeldeversuche. Bitte in 15 Minuten erneut versuchen.'
|
||||
});
|
||||
}
|
||||
const user = await authenticate(email, password);
|
||||
if (!user) return fail(400, { email, error: 'E-Mail oder Passwort ist nicht korrekt.' });
|
||||
createSession(user.id, cookies);
|
||||
redirect(303, '/fundus');
|
||||
}
|
||||
} satisfies Actions;
|
||||
Reference in new issue
Block a user