import { Avatar, Badge, Button, Container, Group, Paper, Stack, Text, Title, } from '@mantine/core' import { createFileRoute, redirect } from '@tanstack/react-router' import { TbLogout, TbUser } from 'react-icons/tb' import { useLogout, useSession } from '@/frontend/hooks/useAuth' export const Route = createFileRoute('/profile')({ beforeLoad: async ({ context }) => { try { const data = await context.queryClient.ensureQueryData({ queryKey: ['auth', 'session'], queryFn: () => fetch('/api/auth/session', { credentials: 'include' }).then((r) => r.json()), }) if (!data?.user) throw redirect({ to: '/login' }) } catch (e) { if (e instanceof Error) throw redirect({ to: '/login' }) throw e } }, component: ProfilePage, }) const roleBadgeColor: Record = { USER: 'blue', ADMIN: 'violet', SUPER_ADMIN: 'red', } function ProfilePage() { const { data } = useSession() const logout = useLogout() const user = data?.user return ( Profile {user?.name?.charAt(0).toUpperCase()}
{user?.name} {user?.email}
{user?.role}
Account Info Name {user?.name} Email {user?.email} Role {user?.role}
) }