fix(cart): use session-based auth instead of localStorage for checkout
Cart page checked localStorage.getItem('user') which is never set by
the cookie-based auth system. Replaced with useUser() context and
corrected redirect target from /cart to /checkout.
This commit is contained in:
@@ -5,6 +5,7 @@ import { useRouter } from 'next/navigation'
|
|||||||
import Link from 'next/link'
|
import Link from 'next/link'
|
||||||
import { Navbar } from '@/components/storefront/Navbar'
|
import { Navbar } from '@/components/storefront/Navbar'
|
||||||
import { Button } from '@/components/ui/Button'
|
import { Button } from '@/components/ui/Button'
|
||||||
|
import { useUser } from '@/context/UserContext'
|
||||||
|
|
||||||
interface CartItem {
|
interface CartItem {
|
||||||
productId: string
|
productId: string
|
||||||
@@ -18,6 +19,7 @@ interface CartItem {
|
|||||||
export default function CartPage() {
|
export default function CartPage() {
|
||||||
const [cart, setCart] = useState<CartItem[]>([])
|
const [cart, setCart] = useState<CartItem[]>([])
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
|
const { user } = useUser()
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const stored = JSON.parse(localStorage.getItem('cart') || '[]')
|
const stored = JSON.parse(localStorage.getItem('cart') || '[]')
|
||||||
@@ -51,10 +53,9 @@ export default function CartPage() {
|
|||||||
|
|
||||||
const subtotal = cart.reduce((sum, item) => sum + item.price * item.quantity, 0)
|
const subtotal = cart.reduce((sum, item) => sum + item.price * item.quantity, 0)
|
||||||
|
|
||||||
async function handleCheckout() {
|
function handleCheckout() {
|
||||||
const user = localStorage.getItem('user')
|
|
||||||
if (!user) {
|
if (!user) {
|
||||||
router.push('/login?redirect=/cart')
|
router.push('/login?redirect=/checkout')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
router.push('/checkout')
|
router.push('/checkout')
|
||||||
|
|||||||
Reference in New Issue
Block a user