File size: 7,880 Bytes
c35213b 5fb7488 c35213b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 | import { getServerSession } from "next-auth/next";
import { authOptions } from "@/app/api/auth/[...nextauth]/route";
import Link from "next/link";
import FadeIn from "@/components/FadeIn";
import DiscordLoginButton from "@/components/DiscordLoginButton";
import PricingCard from "@/components/PricingCard";
import { getDb, checkVipStatus } from "@/lib/db";
export default async function VIPPage() {
const session = await getServerSession(authOptions);
// If not logged in, show login screen
if (!session) {
return (
<FadeIn>
<main className="min-h-[100dvh] bg-black text-white selection:bg-white/20 selection:text-white font-sans p-4 md:p-6 lg:p-8 flex flex-col justify-center items-center relative overflow-hidden">
<div className="bg-noise mix-blend-overlay"></div>
<div className="max-w-md w-full border border-zinc-800 bg-zinc-950 p-8 shadow-2xl relative z-10 before:absolute before:inset-0 before:shadow-[inset_0_0_50px_rgba(0,0,0,0.8)] before:pointer-events-none">
<div className="absolute top-0 left-0 w-full h-1 pl-1 flex gap-1 z-10">
<div className="w-8 h-full bg-white"></div>
<div className="w-2 h-full bg-zinc-800"></div>
</div>
<h1 className="font-mono text-xs tracking-[0.4em] text-zinc-500 uppercase mb-8 text-center">
Security Clearance Required
</h1>
<div className="font-bold tracking-tighter text-4xl uppercase text-white mb-2 text-center">
Wyvern VIP
</div>
<p className="font-mono text-[10px] text-zinc-400 mb-12 text-center tracking-widest leading-relaxed">
Authentication via Discord protocol is strictly required to verify clearance level.
</p>
<DiscordLoginButton />
<div className="mt-8 text-center">
<Link href="/" className="font-mono text-[9px] tracking-[0.3em] text-zinc-600 hover:text-white transition-colors uppercase border-b border-zinc-800 hover:border-white pb-1">
β Return to Base
</Link>
</div>
</div>
</main>
</FadeIn>
);
}
// Get Discord ID from the session object (we mapped this in authOptions)
const discordId = (session.user as any).id;
const isVip = await checkVipStatus(discordId);
return (
<FadeIn>
<main className="min-h-[100dvh] bg-black text-white selection:bg-white/20 selection:text-white font-sans p-4 md:p-6 lg:p-8 flex flex-col justify-center items-center relative overflow-hidden">
<div className="bg-noise mix-blend-overlay"></div>
<div className="max-w-2xl w-full border border-zinc-800 bg-zinc-950 p-8 md:p-12 shadow-2xl relative z-10">
<div className="absolute top-0 left-0 w-full h-1 pl-1 flex gap-1 z-10">
<div className="w-8 h-full bg-white"></div>
<div className="w-2 h-full bg-zinc-800"></div>
</div>
<header className="flex justify-between items-center border-b border-zinc-800 pb-6 mb-8">
<div>
<h1 className="font-mono text-[10px] tracking-[0.4em] text-zinc-500 uppercase">
Identity Confirmed
</h1>
<div className="font-bold tracking-tighter text-2xl uppercase mt-1">
{session.user?.name}
</div>
</div>
<div className="text-right">
<div className={`font-mono text-[10px] tracking-[0.3em] uppercase ${isVip ? 'text-white' : 'text-zinc-600'}`}>
Clearance: {isVip ? 'VIP / UNRESTRICTED' : 'STANDARD / GUEST'}
</div>
<Link href="/api/auth/signout" className="font-mono text-[9px] tracking-widest text-zinc-500 hover:text-white border-b border-zinc-800 mt-2 inline-block transition-colors">
[ TERMINATE SESSION ]
</Link>
</div>
</header>
{isVip ? (
<div className="border border-white/20 bg-white/5 p-6 mt-8">
<h2 className="font-mono text-sm tracking-widest uppercase mb-4 text-white flex items-center gap-3">
<span className="w-2 h-2 bg-white rounded-full animate-pulse"></span>
VIP Dashboard Access
</h2>
<p className="font-mono text-[10px] text-zinc-400 tracking-widest leading-relaxed mb-6">
Your security clearance is elevated. You now have unrestricted access to all highly classified directory index protocols.
</p>
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4">
{[
{ id: 'sources', label: 'Sources', index: '01' },
{ id: 'cracks', label: 'Cracks', index: '02' },
{ id: 'scripts', label: 'Scripts', index: '03' },
{ id: 'tools', label: 'Tools', index: '04' },
].map((mod) => (
<Link
key={mod.id}
href={`/${mod.id}`}
className="p-6 border border-zinc-800 hover:border-white transition-all bg-zinc-900/50 group flex flex-col gap-2"
>
<div className="flex justify-between items-center">
<span className="font-mono text-[9px] text-zinc-600 group-hover:text-zinc-400 transition-colors uppercase tracking-widest">{mod.index}</span>
<span className="text-zinc-700 group-hover:text-white transition-colors">β</span>
</div>
<span className="font-black text-sm tracking-widest text-white uppercase italic group-hover:pl-2 transition-all">
{mod.label}
</span>
</Link>
))}
</div>
</div>
) : (
<div className="mt-8 flex flex-col items-center pt-8 border-t border-zinc-800/50">
<div className="text-center mb-8">
<div className="font-mono text-xs tracking-[0.3em] text-zinc-500 uppercase mb-2">Access Denied</div>
<h2 className="text-2xl font-bold tracking-tighter uppercase mb-4">Elevate Clearance</h2>
<p className="font-mono text-[10px] text-zinc-400 tracking-widest max-w-sm mx-auto leading-relaxed">
Your current identity lacks the necessary clearance protocols to access VIP-restricted directories. To proceed, a clearance elevation transaction is required via SECURE CRYPTO GATEWAY.
</p>
</div>
<div className="grid grid-cols-1 sm:grid-cols-2 xl:grid-cols-4 gap-4 w-full max-w-4xl mt-4">
<PricingCard
label="7 Days"
price="$3.00"
productId={process.env.NEXT_PUBLIC_SELLAPP_WEEKLY_ID || ''}
discordId={discordId}
/>
<PricingCard
label="30 Days"
price="$7.00"
productId={process.env.NEXT_PUBLIC_SELLAPP_MONTHLY_ID || ''}
discordId={discordId}
/>
<PricingCard
label="365 Days"
price="$15.00"
productId={process.env.NEXT_PUBLIC_SELLAPP_YEARLY_ID || ''}
discordId={discordId}
badge="Best Value"
/>
<PricingCard
label="Unrestricted"
price="$25.00"
productId={process.env.NEXT_PUBLIC_SELLAPP_LIFETIME_ID || ''}
discordId={discordId}
highlight
/>
</div>
<p className="font-mono text-[8px] tracking-widest text-zinc-600 uppercase mt-8 text-center max-w-xs">
Automated provisioning via untraceable crypto transaction.<br/>Zero KYC required.
</p>
</div>
)}
</div>
</main>
</FadeIn>
);
}
|