Improve admin access and navigation links for superadmins

Update `App.tsx` to grant superadmin access to the admin dashboard and refactor navigation links to use `Link` component from `wouter`. Modify `DatabaseStorage` in `server/storage.ts` to update user records based on email instead of ID.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 069d4324-6c40-4355-955e-c714a50de1ea
Replit-Commit-Checkpoint-Type: intermediate_checkpoint
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/3df548ff-50ae-432f-9be4-25d34eccc983/069d4324-6c40-4355-955e-c714a50de1ea/bVdKIaU
This commit is contained in:
kimjaehyeon0101
2025-09-29 15:01:03 +00:00
parent ee0c68350d
commit 8cc09a61dc
10 changed files with 97 additions and 17 deletions

View File

@ -26,7 +26,7 @@ function Router() {
<Route path="/media/:slug" component={MediaOutlet} />
<Route path="/articles/:slug" component={Article} />
<Route path="/auctions" component={Auctions} />
{user?.role === 'admin' && (
{(user?.role === 'admin' || user?.role === 'superadmin') && (
<Route path="/admin" component={AdminDashboard} />
)}
{user?.role === 'superadmin' && (

View File

@ -1,5 +1,6 @@
import { useState } from "react";
import { useQuery } from "@tanstack/react-query";
import { Link } from "wouter";
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
import { useAuth } from "@/hooks/useAuth";
@ -39,13 +40,13 @@ export default function Home() {
</div>
<nav className="hidden md:flex space-x-6">
<a href="/" className="text-foreground hover:text-primary transition-colors">Home</a>
<a href="/auctions" className="text-muted-foreground hover:text-foreground transition-colors">Auctions</a>
<Link href="/" className="text-foreground hover:text-primary transition-colors">Home</Link>
<Link href="/auctions" className="text-muted-foreground hover:text-foreground transition-colors">Auctions</Link>
<a href="#" className="text-muted-foreground hover:text-foreground transition-colors">Predictions</a>
{(user?.role === 'admin' || user?.role === 'superadmin') && (
<a href={user.role === 'admin' ? '/admin' : '/superadmin'} className="text-muted-foreground hover:text-foreground transition-colors">
<Link href={user.role === 'admin' ? '/admin' : '/superadmin'} className="text-muted-foreground hover:text-foreground transition-colors">
Dashboard
</a>
</Link>
)}
</nav>
</div>
@ -87,13 +88,15 @@ export default function Home() {
<Button className="bg-white text-primary hover:bg-opacity-90" data-testid="button-explore">
Explore Media Outlets
</Button>
<Button
variant="outline"
className="border-white text-white hover:bg-white hover:text-primary"
data-testid="button-auctions"
>
<a href="/auctions">View Active Auctions</a>
</Button>
<Link href="/auctions">
<Button
variant="outline"
className="border-white text-white hover:bg-white hover:text-primary"
data-testid="button-auctions"
>
View Active Auctions
</Button>
</Link>
</div>
</div>
</div>
@ -129,9 +132,11 @@ export default function Home() {
<div className="mt-12">
<div className="flex items-center justify-between mb-6">
<h2 className="text-2xl font-bold">Active Media Outlet Auctions</h2>
<Button variant="ghost" className="text-primary hover:text-primary/80 font-semibold">
<a href="/auctions">View All Auctions</a>
</Button>
<Link href="/auctions">
<Button variant="ghost" className="text-primary hover:text-primary/80 font-semibold">
View All Auctions
</Button>
</Link>
</div>
{auctionsLoading ? (