fix: replace next/link with anchor tags in sidebar to stop 404 RSC prefetch; set secure cookie by request protocol
This commit is contained in:
4
.env
4
.env
@@ -1 +1,3 @@
|
||||
DATABASE_URL=file:/home/z/my-project/db/custom.db
|
||||
DATABASE_URL=file:/opt/Projects/telegram-shop/db/shop.db
|
||||
ADMIN_SECRET=shop_admin_2024_secure_token
|
||||
SUPER_ADMIN_SECRET=shop_superadmin_2024_secure_token
|
||||
|
||||
@@ -40,12 +40,16 @@ export async function POST(request: NextRequest) {
|
||||
|
||||
loginAttempts.delete(ip);
|
||||
const response = NextResponse.json({ ok: true });
|
||||
// Secure cookie only when the request arrived over HTTPS.
|
||||
// The admin panel is served over plain HTTP (LAN / Tor), where
|
||||
// Secure cookies are silently dropped by browsers.
|
||||
const proto = request.headers.get('x-forwarded-proto') || 'http';
|
||||
response.cookies.set('admin_token', authToken, {
|
||||
httpOnly: true,
|
||||
sameSite: 'lax',
|
||||
maxAge: 86400,
|
||||
path: '/',
|
||||
secure: process.env.NODE_ENV === 'production',
|
||||
secure: proto === 'https',
|
||||
});
|
||||
return response;
|
||||
} catch {
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
"use client";
|
||||
|
||||
import Link from "next/link";
|
||||
import { useState, useEffect } from "react";
|
||||
import {
|
||||
LayoutDashboard,
|
||||
@@ -164,7 +163,7 @@ export function AdminSidebar() {
|
||||
tooltip={item.title}
|
||||
className="[&[data-active='true']]:border-l-2 [&[data-active='true']]:border-l-sidebar-primary relative"
|
||||
>
|
||||
<Link href={item.href}>
|
||||
<a href={item.href}>
|
||||
<item.icon className="size-4 text-muted-foreground transition-colors group-hover/sidebar-menu-button:text-primary" />
|
||||
<span>{item.title}</span>
|
||||
{item.shortcut && (
|
||||
@@ -172,7 +171,7 @@ export function AdminSidebar() {
|
||||
{item.shortcut}
|
||||
</kbd>
|
||||
)}
|
||||
</Link>
|
||||
</a>
|
||||
</SidebarMenuButton>
|
||||
{item.badge && pendingCount > 0 && (
|
||||
<SidebarMenuBadge className="bg-destructive text-destructive-foreground">
|
||||
@@ -204,7 +203,7 @@ export function AdminSidebar() {
|
||||
tooltip={item.title}
|
||||
className="[&[data-active='true']]:border-l-2 [&[data-active='true']]:border-l-sidebar-primary relative"
|
||||
>
|
||||
<Link href={item.href}>
|
||||
<a href={item.href}>
|
||||
<item.icon className="size-4 text-muted-foreground transition-colors group-hover/sidebar-menu-button:text-primary" />
|
||||
<span>{item.title}</span>
|
||||
{item.shortcut && (
|
||||
@@ -212,7 +211,7 @@ export function AdminSidebar() {
|
||||
{item.shortcut}
|
||||
</kbd>
|
||||
)}
|
||||
</Link>
|
||||
</a>
|
||||
</SidebarMenuButton>
|
||||
</SidebarMenuItem>
|
||||
))}
|
||||
@@ -232,10 +231,10 @@ export function AdminSidebar() {
|
||||
tooltip={item.title}
|
||||
className="[&[data-active='true']]:border-l-2 [&[data-active='true']]:border-l-sidebar-primary relative"
|
||||
>
|
||||
<Link href={item.href}>
|
||||
<a href={item.href}>
|
||||
<item.icon className="size-4 text-muted-foreground transition-colors group-hover/sidebar-menu-button:text-primary" />
|
||||
<span>{item.title}</span>
|
||||
</Link>
|
||||
</a>
|
||||
</SidebarMenuButton>
|
||||
</SidebarMenuItem>
|
||||
))}
|
||||
@@ -255,7 +254,7 @@ export function AdminSidebar() {
|
||||
tooltip={item.title}
|
||||
className="[&[data-active='true']]:border-l-2 [&[data-active='true']]:border-l-sidebar-primary relative"
|
||||
>
|
||||
<Link href={item.href}>
|
||||
<a href={item.href}>
|
||||
<item.icon className="size-4 text-muted-foreground transition-colors group-hover/sidebar-menu-button:text-primary" />
|
||||
<span>{item.title}</span>
|
||||
{item.shortcut && (
|
||||
@@ -263,7 +262,7 @@ export function AdminSidebar() {
|
||||
{item.shortcut}
|
||||
</kbd>
|
||||
)}
|
||||
</Link>
|
||||
</a>
|
||||
</SidebarMenuButton>
|
||||
</SidebarMenuItem>
|
||||
))}
|
||||
@@ -274,10 +273,10 @@ export function AdminSidebar() {
|
||||
isActive={pathname.startsWith("/seed")}
|
||||
tooltip="Danger Zone"
|
||||
>
|
||||
<Link href="/seed">
|
||||
<a href="/seed">
|
||||
<AlertTriangle className="size-4 text-destructive" />
|
||||
<span className="text-destructive">Danger Zone</span>
|
||||
</Link>
|
||||
</a>
|
||||
</SidebarMenuButton>
|
||||
</SidebarMenuItem>
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user