feat(auth): include subscription tier in token and session payload
- Adds subscription tier info to access/refresh tokens. - Stores tier details in session Redis record. - Returns tier data in login/register response. - Uses default tier when user has none.
This commit is contained in:
1 parent
7f42def478
commit
d27526e026
20 files changed
+2133
-40
No files matched your search
+15
-2
@@ -31,6 +31,7 @@ import { useSession } from "@/lib/hooks/use-session";
|
||||
import Link from "next/link";
|
||||
import { useState, useEffect } from "react";
|
||||
import { LogOut, User } from "lucide-react";
|
||||
import { Badge } from "@/components/ui/badge";
|
||||
|
||||
export default function Header() {
|
||||
const t = useTranslations("header.nav");
|
||||
@@ -53,6 +54,13 @@ export default function Header() {
|
||||
{ href: `/${locale}/apoiar`, label: t("support"), highlight: true },
|
||||
];
|
||||
|
||||
const navLinks = [
|
||||
...links,
|
||||
...(isAuthenticated && user?.userId === 1
|
||||
? [{ href: `/${locale}/admin/subscriptions`, label: "Admin" }]
|
||||
: []),
|
||||
];
|
||||
|
||||
const handleLogout = async () => {
|
||||
await logout();
|
||||
};
|
||||
@@ -73,7 +81,7 @@ export default function Header() {
|
||||
{/* Desktop Navigation */}
|
||||
<NavigationMenu className="hidden md:flex">
|
||||
<NavigationMenuList>
|
||||
{links.map(({ href, label, highlight }) => (
|
||||
{navLinks.map(({ href, label, highlight }) => (
|
||||
<NavigationMenuItem key={href}>
|
||||
<NavigationMenuLink asChild>
|
||||
<Link
|
||||
@@ -103,6 +111,11 @@ export default function Header() {
|
||||
|
||||
{/* Notifications */}
|
||||
{mounted && isAuthenticated && <NotificationBell />}
|
||||
{mounted && isAuthenticated && user?.subscriptionTier && (
|
||||
<Badge variant="outline" className="uppercase">
|
||||
{user.subscriptionTier.slug}
|
||||
</Badge>
|
||||
)}
|
||||
|
||||
{/* Auth Section */}
|
||||
{!mounted ? (
|
||||
@@ -172,7 +185,7 @@ export default function Header() {
|
||||
|
||||
{/* Mobile Menu */}
|
||||
<div className="md:hidden">
|
||||
<MobileMenu links={links} />
|
||||
<MobileMenu links={navLinks} />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in new issue
Block a user