"use client"; import { useSession, signOut } from "next-auth/react"; import { useRouter } from "next/navigation"; import { useEffect } from "react"; // JWT token'dan expiry bilgisini çıkar function getTokenExpiry(token: string | undefined): string { if (!token) return 'N/A'; try { const payload = JSON.parse(atob(token.split('.')[1])); if (payload.exp) { const expiryDate = new Date(payload.exp * 1000); const now = Date.now(); const remainingMs = expiryDate.getTime() - now; const remainingMinutes = Math.floor(remainingMs / 60000); if (remainingMs < 0) { return '⚠️ Token süresi dolmuş'; } else if (remainingMinutes > 60) { const hours = Math.floor(remainingMinutes / 60); const mins = remainingMinutes % 60; return `${hours} saat ${mins} dakika`; } else { return `${remainingMinutes} dakika`; } } } catch { return 'N/A'; } return 'N/A'; } export default function DashboardPage() { const { data: session, status } = useSession(); const router = useRouter(); useEffect(() => { if (status === "unauthenticated") { router.push("/auth/login"); } }, [status, router]); if (status === "loading") { return (
Session Hatası
{session.error === 'RefreshAccessTokenError' ? 'Token yenileme başarısız. Lütfen tekrar giriş yapın.' : session.error}
{session.user?.email || 'N/A'}
{session.user?.name || 'Belirtilmemiş'}
{session.accessToken || '❌ Token bulunamadı'}
⏱️ Kalan süre: {getTokenExpiry(session.accessToken)}
)}
{session.refreshToken || '❌ Token bulunamadı'}
⏱️ Kalan süre: {getTokenExpiry(session.refreshToken)}
)}{session.expires ? new Date(session.expires).toLocaleString('tr-TR', { dateStyle: 'medium', timeStyle: 'medium' }) : 'N/A'}
{session.expires ? (() => { const expiryTime = new Date(session.expires).getTime(); const now = Date.now(); const remainingMs = expiryTime - now; const remainingMinutes = Math.floor(remainingMs / 60000); const remainingHours = Math.floor(remainingMinutes / 60); const remainingDays = Math.floor(remainingHours / 24); if (remainingMs < 0) { return '⚠️ Session süresi dolmuş (yeniden giriş yapın)'; } else if (remainingDays > 0) { return `${remainingDays} gün ${remainingHours % 24} saat`; } else if (remainingHours > 0) { return `${remainingHours} saat ${remainingMinutes % 60} dakika`; } else { return `${remainingMinutes} dakika`; } })() : 'N/A'}
{JSON.stringify(session, null, 2)}