mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-21 05:45:46 +00:00
26 lines
1.2 KiB
TypeScript
26 lines
1.2 KiB
TypeScript
/**
|
|
* Redirects the user to the SSO login page with loop protection.
|
|
*
|
|
* This function checks a session storage timestamp to ensure that redirects
|
|
* do not happen too frequently (blocking infinite redirect loops).
|
|
*/
|
|
export const redirectToSSO = () => {
|
|
if (typeof window === 'undefined') return;
|
|
|
|
const lastRedirect = sessionStorage.getItem('auth_redirect_timestamp');
|
|
const now = Date.now();
|
|
|
|
// Loop protection: allow redirect only if last one was > 5 seconds ago
|
|
// or if no redirect has happened yet.
|
|
if (!lastRedirect || now - parseInt(lastRedirect, 10) > 5000) {
|
|
sessionStorage.setItem('auth_redirect_timestamp', now.toString());
|
|
// const ssoLoginUrl = `${process.env.NEXT_PUBLIC_SSO_LOGIN_URL as string}?redirect_url=${window.location.href}`;
|
|
|
|
const ltiSsoStart = `${process.env.NEXT_PUBLIC_API_BASE_URL as string}/sso/start?client_id=${process.env.NEXT_PUBLIC_CLIENT_ID as string}&redirect_url=${window.location.href}`;
|
|
const ssoLoginUrl = `${process.env.NEXT_PUBLIC_SSO_LOGIN_URL as string}?redirect_url=${ltiSsoStart}`;
|
|
window.location.href = ssoLoginUrl;
|
|
} else {
|
|
console.error('Redirect loop detected. Aborting redirect.');
|
|
}
|
|
};
|