| 123456789101112131415161718192021222324252627282930313233343536 |
- 'use client';
- import Link from 'next/link';
- import { usePathname } from 'next/navigation';
- import type { ReactNode } from 'react';
- import useAuth from '@/hooks/useAuth';
- // 모의투자 인증 게이트 — 비로그인 시 자동 로그인 이동 대신 안내 + 버튼(이동은 사용자 결정).
- // 계좌/주문/포트폴리오 컴포넌트가 /api/paper/* 를 호출해 401→auth:unauthorized→자동 리다이렉트되는 것을,
- // 비로그인 시 자식을 아예 마운트하지 않음으로써 원천 차단한다.
- type Props = {
- children: ReactNode;
- };
- export default function PaperAuthGate({ children }: Props)
- {
- const { isAuthenticated } = useAuth();
- const pathname = usePathname();
- if (!isAuthenticated) {
- return (
- <div className='paper__empty-account' role='note'>
- <div className='paper__empty-account-title'>로그인이 필요한 기능이에요</div>
- <p className='paper__empty-account-desc'>
- 모의투자 계좌·주문·포트폴리오는 로그인 후 이용할 수 있어요.<br />
- 아래 버튼으로 로그인하면 이 페이지로 다시 돌아옵니다.
- </p>
- <Link href={`/login?returnUrl=${encodeURIComponent(pathname)}`} className='paper__btn paper__btn--primary'>
- 로그인하러 가기
- </Link>
- </div>
- );
- }
- return <>{children}</>;
- }
|