fix(FE): resolve merge conflict development

This commit is contained in:
randy-ar
2025-12-10 16:44:52 +07:00
4 changed files with 27 additions and 15 deletions
+1 -1
View File
@@ -160,6 +160,6 @@ deploy:dev:
# variables: # variables:
# S3_BUCKET: "lti-erp.mbugroup.id" # S3_BUCKET: "lti-erp.mbugroup.id"
# CLOUDFRONT_DISTRIBUTION_ID: "ddfd" # CLOUDFRONT_DISTRIBUTION_ID: "ddfd"
# environment: # environment:
# name: production # name: production
+10 -3
View File
@@ -1,11 +1,18 @@
import { redirect } from 'next/navigation'; 'use client';
import { useEffect } from 'react';
import { useRouter } from 'next/navigation';
export default function Home() { export default function Home() {
redirect('/dashboard'); const router = useRouter();
useEffect(() => {
router.replace('/dashboard');
}, [router]);
return ( return (
<main className='w-full h-full min-h-screen flex flex-row justify-center items-center'> <main className='w-full h-full min-h-screen flex flex-row justify-center items-center'>
<h1>LTI ERP</h1> <span className='loading loading-spinner loading-lg'></span>
</main> </main>
); );
} }
+14 -9
View File
@@ -38,18 +38,23 @@ const RequireAuth = ({ children }: RequireAuthProps) => {
// Explicitly handle 401 redirect from the component level // Explicitly handle 401 redirect from the component level
useEffect(() => { useEffect(() => {
if (userErrorResponse?.response?.status === 401) { if (userErrorResponse?.response?.status === 401) {
// Clear cache to prevent stale data from rendering children
// mutate('/sso/userinfo', undefined, { revalidate: false }); // Optional: if using global mutate
setUser(undefined);
redirectToSSO(); redirectToSSO();
} }
}, [userErrorResponse]); }, [userErrorResponse, setUser]);
// TODO: uncomment this later if (
// if (isLoadingUserResponse && !userResponse) { (isLoadingUserResponse && !userResponse && !userErrorResponse) ||
// return ( (!userResponse && !userErrorResponse)
// <div className='w-full flex flex-row justify-center items-center p-4'> ) {
// <span className='loading loading-spinner loading-xl' /> return (
// </div> <div className='w-full flex flex-row justify-center items-center p-4'>
// ); <span className='loading loading-spinner loading-xl' />
// } </div>
);
}
if (userErrorResponse) { if (userErrorResponse) {
return ( return (
+2 -2
View File
@@ -10,9 +10,9 @@ export const redirectToSSO = () => {
const lastRedirect = sessionStorage.getItem('auth_redirect_timestamp'); const lastRedirect = sessionStorage.getItem('auth_redirect_timestamp');
const now = Date.now(); const now = Date.now();
// Loop protection: allow redirect only if last one was > 2 seconds ago // Loop protection: allow redirect only if last one was > 5 seconds ago
// or if no redirect has happened yet. // or if no redirect has happened yet.
if (!lastRedirect || now - parseInt(lastRedirect, 10) > 2000) { if (!lastRedirect || now - parseInt(lastRedirect, 10) > 5000) {
sessionStorage.setItem('auth_redirect_timestamp', now.toString()); sessionStorage.setItem('auth_redirect_timestamp', now.toString());
// const ssoLoginUrl = `${process.env.NEXT_PUBLIC_SSO_LOGIN_URL as string}?redirect_url=${window.location.href}`; // const ssoLoginUrl = `${process.env.NEXT_PUBLIC_SSO_LOGIN_URL as string}?redirect_url=${window.location.href}`;