feat(visibility): 사주·음악·설문·패키지 라우트 숨김 가드 적용
This commit is contained in:
@@ -1,4 +1,6 @@
|
|||||||
|
import { notFound } from 'next/navigation';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { isServiceVisible } from '@/lib/service-visibility';
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: 'CONTOUR — 나를 더 선명하게 이해하는 3분',
|
title: 'CONTOUR — 나를 더 선명하게 이해하는 3분',
|
||||||
@@ -22,7 +24,8 @@ export const metadata: Metadata = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function GyeolLayout({ children }: { children: React.ReactNode }) {
|
export default async function GyeolLayout({ children }: { children: React.ReactNode }) {
|
||||||
|
if (!(await isServiceVisible('gyeol'))) notFound();
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
className="min-h-screen"
|
className="min-h-screen"
|
||||||
|
|||||||
@@ -1,10 +1,13 @@
|
|||||||
|
import { notFound } from 'next/navigation';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { isServiceVisible } from '@/lib/service-visibility';
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: 'AI 음악 제품',
|
title: 'AI 음악 제품',
|
||||||
description: 'Suno 프롬프트 + 뮤직비디오 워크플로우 + 유튜브 SEO 템플릿 한 팩에. 1시간 만에 음악·뮤비 완성.',
|
description: 'Suno 프롬프트 + 뮤직비디오 워크플로우 + 유튜브 SEO 템플릿 한 팩에. 1시간 만에 음악·뮤비 완성.',
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function MusicLayout({ children }: { children: React.ReactNode }) {
|
export default async function MusicLayout({ children }: { children: React.ReactNode }) {
|
||||||
|
if (!(await isServiceVisible('music'))) notFound();
|
||||||
return <>{children}</>;
|
return <>{children}</>;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
|
import { notFound } from 'next/navigation';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { isServiceVisible } from '@/lib/service-visibility';
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: 'SaaS 제품 · 월 구독 패키지',
|
title: 'SaaS 제품 · 월 구독 패키지',
|
||||||
@@ -13,6 +15,7 @@ export const metadata: Metadata = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function PackagesLayout({ children }: { children: React.ReactNode }) {
|
export default async function PackagesLayout({ children }: { children: React.ReactNode }) {
|
||||||
return children;
|
if (!(await isServiceVisible('packages'))) notFound();
|
||||||
|
return <>{children}</>;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
|
import { notFound } from 'next/navigation';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { isServiceVisible } from '@/lib/service-visibility';
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: 'AI 사주 분석',
|
title: 'AI 사주 분석',
|
||||||
@@ -22,6 +24,7 @@ export const metadata: Metadata = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function SajuLayout({ children }: { children: React.ReactNode }) {
|
export default async function SajuLayout({ children }: { children: React.ReactNode }) {
|
||||||
return children;
|
if (!(await isServiceVisible('saju'))) notFound();
|
||||||
|
return <>{children}</>;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user