feat: add impersonate page to handle session token injection and redirection

This commit is contained in:
john kevin asprec
2026-06-16 22:33:18 +08:00
parent 9f031a6757
commit 9adabb6f5d

View File

@@ -0,0 +1,41 @@
'use client';
import { useEffect, Suspense } from 'react';
import { useRouter, useSearchParams } from 'next/navigation';
function ImpersonateHandler() {
const router = useRouter();
const searchParams = useSearchParams();
useEffect(() => {
const token = searchParams.get('token');
const userStr = searchParams.get('user');
const tenantStr = searchParams.get('tenant');
if (token && userStr && tenantStr) {
localStorage.setItem('accessToken', token);
localStorage.setItem('user', userStr);
localStorage.setItem('tenant', tenantStr);
localStorage.setItem('is_impersonating', 'true');
router.push('/dashboard');
} else {
router.push('/login');
}
}, [router, searchParams]);
return null;
}
export default function ImpersonatePage() {
return (
<div className="min-h-screen flex items-center justify-center bg-surface-50 dark:bg-surface-900">
<div className="text-center">
<div className="w-10 h-10 border-4 border-primary-500 border-t-transparent rounded-full animate-spin mx-auto mb-4"></div>
<p className="text-surface-600 dark:text-surface-400">Loading impersonation session...</p>
</div>
<Suspense fallback={null}>
<ImpersonateHandler />
</Suspense>
</div>
);
}