fixed redirect after login

This commit is contained in:
Patrick 2025-08-05 13:56:05 +02:00
parent 144124f4df
commit d0af8e9b2e
2 changed files with 18 additions and 8 deletions

View File

@ -1,5 +1,5 @@
import type { Actions } from "@sveltejs/kit";
import type { PageServerLoad } from "./$types";
import type { PageServerLoad } from "./$types";
import { fail, redirect } from "@sveltejs/kit";
import Logs from "$lib/server/log"
@ -7,22 +7,31 @@ import Logs from "$lib/server/log"
import { authorize_password } from "$lib/server/auth";
import SessionStore from "$lib/server/session_store";
function _get_redirect(url: URL) {
let redirect_url = url.searchParams.get("redirect");
url.searchParams.delete("redirect")
if (!redirect_url || !redirect_url.startsWith("/")) {
redirect_url = "/"
}
return redirect_url + "?" + url.searchParams.toString()
}
export const load: PageServerLoad = ({ locals, url }) => {
let redirect_url = url.searchParams.get("redirect") ?? "/";
if (locals.user != null) {
redirect(302, redirect_url);
redirect(302, _get_redirect(url));
}
}
export const actions = {
login: async ({ locals, request, cookies, url }) => {
let redirect_url = url.searchParams.get("redirect") ?? "/";
url.searchParams.delete("/login")
if (locals.user != null) {
redirect(302, redirect_url);
redirect(302, _get_redirect(url));
}
@ -55,7 +64,7 @@ export const actions = {
path: '/'
})
redirect(302, redirect_url);
redirect(302, _get_redirect(url));
},
logout: async ({ locals, cookies }) => {

View File

@ -1,6 +1,7 @@
<script lang="ts">
import type { PageProps } from "./$types";
import { enhance } from "$app/forms";
import { page } from "$app/state";
let { form }: PageProps = $props();
@ -8,7 +9,7 @@
<div>
<h1>Login</h1>
<form id="login" method="POST" action="?/login" use:enhance={({formElement}) => { formElement.reset() }}>
<form id="login" method="POST" action={`?/login&${page.url.searchParams.toString()}`} use:enhance={({formElement}) => { formElement.reset() }}>
<table>
<tbody>
<tr>