Preload a CSRF token on the registration page
This commit is contained in:
parent
f68587419d
commit
b4cfd91ff4
@ -5,10 +5,22 @@
|
|||||||
import LoginForm from '@/app/ui/components/login-form';
|
import LoginForm from '@/app/ui/components/login-form';
|
||||||
import RegistrationForm from '@/app/ui/components/registration-form';
|
import RegistrationForm from '@/app/ui/components/registration-form';
|
||||||
import { useParams } from 'next/navigation'
|
import { useParams } from 'next/navigation'
|
||||||
|
import { useEffect } from 'react';
|
||||||
|
import { retrieveCSRFToken } from '../api/authentication';
|
||||||
|
import { getCsrfToken } from '../lib/utils';
|
||||||
|
|
||||||
export default async function Page() {
|
export default async function Page() {
|
||||||
const params = useParams<{ slug: string }>()
|
const params = useParams<{ slug: string }>()
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (getCsrfToken() == 'unknown') {
|
||||||
|
retrieveCSRFToken();
|
||||||
|
}
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
if (typeof window !== 'undefined') {
|
||||||
localStorage.setItem('slug', await params.slug);
|
localStorage.setItem('slug', await params.slug);
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<main className="flex min-h-screen flex-col p-6">
|
<main className="flex min-h-screen flex-col p-6">
|
||||||
|
@ -43,6 +43,15 @@ function flattenErrors(errors: StructuredErrors): string[] {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// At this moment we're making an initial request to get a valid CSRF token
|
||||||
|
export function retrieveCSRFToken() {
|
||||||
|
return fetch(`/api/token`, {
|
||||||
|
headers: {
|
||||||
|
'Accept': 'application/json',
|
||||||
|
}
|
||||||
|
}).then((response) => { return null });
|
||||||
|
}
|
||||||
|
|
||||||
export function register({ slug, email, password, passwordConfirmation, captcha, onRegister, onError }: {
|
export function register({ slug, email, password, passwordConfirmation, captcha, onRegister, onError }: {
|
||||||
slug: string,
|
slug: string,
|
||||||
email: string,
|
email: string,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user