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,39 @@
|
||||
import { fail, redirect } from '@sveltejs/kit';
|
||||
import type { Actions, PageServerLoad } from './$types';
|
||||
import {
|
||||
deleteLinkToken,
|
||||
passwordResetIsValid,
|
||||
readLinkToken,
|
||||
RESET_COOKIE,
|
||||
resetPassword,
|
||||
storeLinkToken,
|
||||
validPassword
|
||||
} from '#lib/server/auth.js';
|
||||
|
||||
export const load: PageServerLoad = ({ url, cookies }) => {
|
||||
const queryToken = url.searchParams.get('token');
|
||||
if (queryToken) {
|
||||
if (queryToken.length <= 100) storeLinkToken(cookies, RESET_COOKIE, queryToken);
|
||||
else deleteLinkToken(cookies, RESET_COOKIE);
|
||||
redirect(303, '/passwort-zuruecksetzen');
|
||||
}
|
||||
return { valid: passwordResetIsValid(readLinkToken(cookies, RESET_COOKIE)) };
|
||||
};
|
||||
|
||||
export const actions = {
|
||||
default: async ({ request, cookies }) => {
|
||||
const data = await request.formData();
|
||||
const token = readLinkToken(cookies, RESET_COOKIE);
|
||||
const password = String(data.get('password') || '');
|
||||
if (!validPassword(password)) {
|
||||
return fail(400, { error: 'Das neue Passwort muss mindestens 12 Zeichen lang sein.' });
|
||||
}
|
||||
try {
|
||||
await resetPassword(token, password);
|
||||
deleteLinkToken(cookies, RESET_COOKIE);
|
||||
} catch {
|
||||
return fail(400, { error: 'Der Link ist ungültig, abgelaufen oder bereits verwendet.' });
|
||||
}
|
||||
redirect(303, '/login?reset=erfolgreich');
|
||||
}
|
||||
} satisfies Actions;
|
||||
Reference in new issue
Block a user