allow external URLs in private instances
This commit is contained in:
@@ -58,7 +58,7 @@ const auth: Handle = async ({ event, resolve }) => {
|
|||||||
|
|
||||||
|
|
||||||
// validate the user existence and if the path is acceesible
|
// validate the user existence and if the path is acceesible
|
||||||
if (!pb.authStore.record && isRouteProtected(url.pathname)) {
|
if (!pb.authStore.record && isRouteProtected(url)) {
|
||||||
throw redirect(302, '/login?r=' + url.pathname);
|
throw redirect(302, '/login?r=' + url.pathname);
|
||||||
} else if (pb.authStore.record && url.pathname === "/login") {
|
} else if (pb.authStore.record && url.pathname === "/login") {
|
||||||
throw redirect(302, '/');
|
throw redirect(302, '/');
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { browser } from "$app/environment";
|
||||||
import { env } from "$env/dynamic/public";
|
import { env } from "$env/dynamic/public";
|
||||||
|
|
||||||
const privateRoutes = [
|
const privateRoutes = [
|
||||||
@@ -12,12 +13,23 @@ const publicRoutes = [
|
|||||||
"/api/v1/auth",
|
"/api/v1/auth",
|
||||||
"/api/v1/user",
|
"/api/v1/user",
|
||||||
"/api/v1/category",
|
"/api/v1/category",
|
||||||
|
"/api/v1/auth/oauth",
|
||||||
"/register",
|
"/register",
|
||||||
"/auth"
|
"/auth"
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
export function isRouteProtected(path: string) {
|
export function isRouteProtected(url: URL | undefined) {
|
||||||
|
|
||||||
|
if (url === undefined) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (browser && url.hostname !== window.location.hostname) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const path = url.pathname
|
||||||
|
|
||||||
if (env.PUBLIC_PRIVATE_INSTANCE == "true") {
|
if (env.PUBLIC_PRIVATE_INSTANCE == "true") {
|
||||||
return !publicRoutes.some(allowedPath =>
|
return !publicRoutes.some(allowedPath =>
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
let { data, children }: Props = $props();
|
let { data, children }: Props = $props();
|
||||||
|
|
||||||
beforeNavigate((n) => {
|
beforeNavigate((n) => {
|
||||||
if (!$currentUser && isRouteProtected(n.to?.url?.pathname ?? "")) {
|
if (!$currentUser && isRouteProtected(n.to?.url)) {
|
||||||
n.cancel();
|
n.cancel();
|
||||||
goto("/login?r=" + n.to?.url?.pathname);
|
goto("/login?r=" + n.to?.url?.pathname);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user