diff --git a/packages/admin/src/routes/_authenticated.tsx b/packages/admin/src/routes/_authenticated.tsx
index d790e1c..f22f845 100644
--- a/packages/admin/src/routes/_authenticated.tsx
+++ b/packages/admin/src/routes/_authenticated.tsx
@@ -8,7 +8,8 @@ import { myPermissionsOptions } from '@/api/rbac'
import { moduleListOptions } from '@/api/modules'
import { Avatar } from '@/components/shared/avatar-upload'
import { Button } from '@/components/ui/button'
-import { Users, UserRound, HelpCircle, Shield, UserCog, LogOut, User, Wrench, Package, ClipboardList, FolderOpen, KeyRound, Settings, PanelLeftClose, PanelLeft, CalendarDays, GraduationCap, CalendarRange, BookOpen, BookMarked, Package2, Tag, Truck, ShoppingCart } from 'lucide-react'
+import { Users, UserRound, HelpCircle, Shield, UserCog, LogOut, User, Wrench, Package, ClipboardList, FolderOpen, KeyRound, Settings, PanelLeftClose, PanelLeft, CalendarDays, GraduationCap, CalendarRange, BookOpen, BookMarked, Package2, Tag, Truck, ShoppingCart, AlertTriangle } from 'lucide-react'
+import { Alert, AlertTitle, AlertDescription } from '@/components/ui/alert'
export const Route = createFileRoute('/_authenticated')({
beforeLoad: () => {
@@ -112,6 +113,13 @@ function AuthenticatedLayout() {
const setPermissions = useAuthStore((s) => s.setPermissions)
const permissionsLoaded = useAuthStore((s) => s.permissionsLoaded)
+ // Fetch profile for PIN warning
+ const { data: profile } = useQuery(queryOptions({
+ queryKey: ['auth', 'me'],
+ queryFn: () => api.get<{ hasPin: boolean }>('/v1/auth/me'),
+ enabled: !!useAuthStore.getState().token,
+ }))
+
// Fetch permissions on mount
const { data: permData } = useQuery({
...myPermissionsOptions(),
@@ -263,6 +271,18 @@ function AuthenticatedLayout() {