fix: disallow cross origin/non http protocols for continueUrl on login (#28706)
* fix: disallow cross origin/non http protocols for continueUrl on login * chore: use Route helper * fix: also use Route.continue in pin code prompt * fix: typecheckpull/28751/head
parent
69b1946484
commit
4eb100327e
|
|
@ -152,4 +152,13 @@ export const Route = {
|
||||||
// queues
|
// queues
|
||||||
queues: () => '/admin/queues',
|
queues: () => '/admin/queues',
|
||||||
viewQueue: ({ name }: { name: QueueName }) => `/admin/queues/${asQueueSlug(name)}`,
|
viewQueue: ({ name }: { name: QueueName }) => `/admin/queues/${asQueueSlug(name)}`,
|
||||||
|
|
||||||
|
// continue helper for ensuring same-origin URLs
|
||||||
|
continue: (url: string | null, fallback: string) => {
|
||||||
|
if (!url || !url.startsWith('/') || url.startsWith('//')) {
|
||||||
|
return fallback;
|
||||||
|
}
|
||||||
|
|
||||||
|
return url;
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,8 @@ import type { PageLoad } from './$types';
|
||||||
export const load = (async ({ parent, url }) => {
|
export const load = (async ({ parent, url }) => {
|
||||||
await parent();
|
await parent();
|
||||||
|
|
||||||
const continueUrl = url.searchParams.get('continue') || Route.photos();
|
const continueUrl = Route.continue(url.searchParams.get('continue'), Route.photos());
|
||||||
|
|
||||||
if (authManager.authenticated) {
|
if (authManager.authenticated) {
|
||||||
redirect(307, continueUrl);
|
redirect(307, continueUrl);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@
|
||||||
|
|
||||||
await new Promise((resolve) => setTimeout(resolve, 1000));
|
await new Promise((resolve) => setTimeout(resolve, 1000));
|
||||||
|
|
||||||
await goto(data.continueUrl);
|
await goto(Route.continue(data.continueUrl, Route.photos()));
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
handleError(error, $t('wrong_pin_code'));
|
handleError(error, $t('wrong_pin_code'));
|
||||||
isBadPinCode = true;
|
isBadPinCode = true;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue