From 7846cacc9d704366a3906cbfe7418d44b08b4920 Mon Sep 17 00:00:00 2001 From: sazzadulalambd Date: Thu, 7 May 2026 16:14:33 +0600 Subject: [PATCH] feat: implement super_admin role, add swap station user, and update login routing logic --- src/app/login/page.tsx | 23 ++++++----- src/data/mockData.ts | 89 +++++++++++++++++++++--------------------- 2 files changed, 58 insertions(+), 54 deletions(-) diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index 8bfda5a..05edbf5 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -6,11 +6,12 @@ import { users } from '@/data/mockData'; import { Zap, ArrowRight, Bike, Wallet, Shield, Users, Calculator, Store, Truck } from 'lucide-react'; const demoUsers = [ - { email: 'superadmin@jaiben.com', role: 'admin', label: 'Super Admin', icon: Shield, color: 'bg-accent' }, - { email: 'admin@jaiben.com', role: 'manager', label: 'Admin Manager', icon: Users, color: 'bg-blue-500' }, + { email: 'superadmin@jaiben.com', role: 'super_admin', label: 'Super Admin', icon: Shield, color: 'bg-accent' }, + { email: 'admin@jaiben.com', role: 'admin', label: 'Admin Manager', icon: Users, color: 'bg-blue-500' }, { email: 'staff@jaiben.com', role: 'staff', label: 'Front Desk', icon: Users, color: 'bg-purple-500' }, { email: 'accountant@jaiben.com', role: 'accountant', label: 'Accountant', icon: Calculator, color: 'bg-green-500' }, { email: 'investor@email.com', role: 'investor', label: 'Investor', icon: Wallet, color: 'bg-amber-500' }, + { email: 'swap@jaiben.com', role: 'swap-station', label: 'Swap Station', icon: Zap, color: 'bg-purple-500' }, ]; export default function LoginPage() { @@ -34,14 +35,15 @@ export default function LoginPage() { sessionStorage.setItem('userRole', user.role); sessionStorage.setItem('userName', user.name); - switch (user.role) { +switch (user.role) { + case 'super_admin': case 'admin': case 'manager': case 'staff': router.push('/admin'); break; case 'accountant': - router.push('/admin'); + router.push('/admin/accounting'); break; case 'investor': router.push('/investor'); @@ -56,33 +58,34 @@ export default function LoginPage() { router.push('/merchant'); break; default: - router.push('/'); + router.push('/login'); } } else { setError('Invalid email or password. Try demo123'); } - + setLoading(false); }; const handleQuickLogin = async (userEmail: string) => { setLoading(true); await new Promise(resolve => setTimeout(resolve, 500)); - + const user = users.find(u => u.email === userEmail); if (user) { sessionStorage.setItem('authToken', 'demo-token'); sessionStorage.setItem('userRole', user.role); sessionStorage.setItem('userName', user.name); - + switch (user.role) { + case 'super_admin': case 'admin': case 'manager': case 'staff': router.push('/admin'); break; case 'accountant': - router.push('/admin'); + router.push('/admin/accounting'); break; case 'investor': router.push('/investor'); @@ -140,7 +143,7 @@ export default function LoginPage() {