CSRF refresh fixes
This commit is contained in:
parent
a8dc0b3647
commit
f0e8e20c24
15 changed files with 12111 additions and 51665 deletions
|
|
@ -1,33 +1,33 @@
|
|||
"use client";
|
||||
|
||||
import { FC, PropsWithChildren, useState, useEffect } from "react";
|
||||
import { FC, PropsWithChildren, useEffect } from "react";
|
||||
import { useRouter } from "next/navigation";
|
||||
import { useSession } from "next-auth/react";
|
||||
|
||||
export const CSRFProvider: FC<PropsWithChildren> = ({ children }) => {
|
||||
const { data: session, status, update } = useSession();
|
||||
const router = useRouter();
|
||||
const [redirectCount, setRedirectCount] = useState(0);
|
||||
|
||||
useEffect(() => {
|
||||
const interval = setInterval(async () => {
|
||||
const checkSession = async () => {
|
||||
console.log("Checking session status...");
|
||||
console.log(status);
|
||||
if (status === "authenticated") {
|
||||
const response = await fetch("/api/v1/users/me");
|
||||
console.log(response.ok);
|
||||
console.log(!!router);
|
||||
if (!response.ok && !!router) {
|
||||
const response = await fetch("/api/v1/users/me", {
|
||||
method: "GET",
|
||||
});
|
||||
|
||||
if (response.status !== 200 && !!router) {
|
||||
console.log("redirecting");
|
||||
setRedirectCount(redirectCount + 1);
|
||||
router.push("/setup");
|
||||
window.location.href = "/auth/sso";
|
||||
} else {
|
||||
setRedirectCount(0);
|
||||
const token = response.headers.get("CSRF-Token");
|
||||
update({ csrfToken: token });
|
||||
update({ zammadCsrfToken: token });
|
||||
}
|
||||
}
|
||||
}, 15000);
|
||||
};
|
||||
|
||||
const interval = setInterval(checkSession, 15000);
|
||||
|
||||
return () => clearInterval(interval);
|
||||
}, [session, status, update, router]);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue