feat: implement super_admin role, add swap station user, and update login routing logic
This commit is contained in:
@@ -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() {
|
||||
|
||||
<div>
|
||||
<label htmlFor="password" className="block text-sm font-medium text-slate-300 mb-2">
|
||||
Password
|
||||
Password <span className="text-slate-500 text-xs">(demo: demo123)</span>
|
||||
</label>
|
||||
<input
|
||||
type="password"
|
||||
|
||||
Reference in New Issue
Block a user