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

@ -7,22 +7,31 @@ import Logs from "$lib/server/log"
import { authorize_password } from "$lib/server/auth"; import { authorize_password } from "$lib/server/auth";
import SessionStore from "$lib/server/session_store"; 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 }) => { export const load: PageServerLoad = ({ locals, url }) => {
let redirect_url = url.searchParams.get("redirect") ?? "/";
if (locals.user != null) { if (locals.user != null) {
redirect(302, redirect_url); redirect(302, _get_redirect(url));
} }
} }
export const actions = { export const actions = {
login: async ({ locals, request, cookies, url }) => { login: async ({ locals, request, cookies, url }) => {
url.searchParams.delete("/login")
let redirect_url = url.searchParams.get("redirect") ?? "/";
if (locals.user != null) { if (locals.user != null) {
redirect(302, redirect_url); redirect(302, _get_redirect(url));
} }
@ -55,7 +64,7 @@ export const actions = {
path: '/' path: '/'
}) })
redirect(302, redirect_url); redirect(302, _get_redirect(url));
}, },
logout: async ({ locals, cookies }) => { logout: async ({ locals, cookies }) => {

View File

@ -1,6 +1,7 @@
<script lang="ts"> <script lang="ts">
import type { PageProps } from "./$types"; import type { PageProps } from "./$types";
import { enhance } from "$app/forms"; import { enhance } from "$app/forms";
import { page } from "$app/state";
let { form }: PageProps = $props(); let { form }: PageProps = $props();
@ -8,7 +9,7 @@
<div> <div>
<h1>Login</h1> <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> <table>
<tbody> <tbody>
<tr> <tr>