fixed redirect after login
This commit is contained in:
parent
144124f4df
commit
d0af8e9b2e
|
|
@ -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 }) => {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue