19 lines
670 B
TypeScript
19 lines
670 B
TypeScript
import type { ReactNode } from 'react'
|
||
import { Navigate } from 'react-router-dom'
|
||
import { useAuth } from '@/auth/useAuth'
|
||
|
||
/**
|
||
* Route-guard админки: доступ только у пользователей с ролью
|
||
* `admin`. Оборачивается ВНУТРИ `RequireAuth` (сессия уже гарантированно
|
||
* восстановлена и `user` заполнен) — без сессии сюда не попасть.
|
||
*/
|
||
export function RequireAdmin({ children }: { children: ReactNode }) {
|
||
const { user } = useAuth()
|
||
|
||
if (user?.role !== 'admin') {
|
||
return <Navigate to="/lobby" replace />
|
||
}
|
||
|
||
return <>{children}</>
|
||
}
|