import React, { useState } from 'react'; import { ShieldCheck, Lock, LayoutGrid, Activity, Key, ShieldAlert, CheckCircle, MailCheck, User, Sliders, FileText, Copy, ExternalLink, Info, } from 'lucide-react'; import { useAuth } from '../context/AuthContext'; import { DashboardLayout } from '../components/layout/DashboardLayout'; import { Badge } from '../components/common/Badge'; import { Button } from '../components/common/Button'; import { Card } from '../components/common/Card'; import { MOCK_STATS, MOCK_ACTIVITIES } from '../services/mockData'; import '../styles/dashboard.css'; export function Dashboard() { const { user, token, isDemoMode, logout } = useAuth(); const [activeTab, setActiveTab] = useState('dashboard'); const [showTokenModal, setShowTokenModal] = useState(false); const [copied, setCopied] = useState(false); // Icon mapping for stats const statIcons = { ShieldCheck, Lock, LayoutGrid, Activity, }; // Icon mapping for activities const activityIcons = { Key, ShieldAlert, CheckCircle, MailCheck, }; const handleCopyToken = () => { if (token) { navigator.clipboard.writeText(token); setCopied(true); setTimeout(() => setCopied(false), 2000); } }; return ( {/* === BUILDER:TABS (do not remove) === */} {/* Hero Welcome Banner */}
Identity & Access Controller

Welcome back, {user?.firstName || 'Alex'}

AuthSec base project is operational. Your session is protected with Spring Boot JWT authentication and granular role-based security boundaries.

JWT: {token ? `${token.slice(0, 14)}...` : 'demo-token'}
{/* Metric Stats Cards */}
{MOCK_STATS.map((stat) => { const Icon = statIcons[stat.icon] || Activity; return (
{stat.title}
{stat.value}
{stat.subtitle} {stat.trend}
); })}
{/* Quick Action Buttons */}

Quick Actions

setShowTokenModal(true)}>
Security Token View JWT payload & auth headers
alert(`User Profile:\nName: ${user?.fullname || user?.firstName}\nEmail: ${user?.email}\nRoles: ${user?.roles?.join(', ')}`)} >
User Profile Account ID #{user?.userId || '101'}
alert('System Parameters: Spring Boot Service Port 9292\nCORS: Enabled\nToken Lifetime: 24h')} >
System Parameters Endpoints & security policies
setActiveTab('security')} >
Audit Reports Inspect security logs
{/* Live Security Activity Stream */}

Recent Security Events

Audited session entries recorded for this workspace

Live Stream
{MOCK_ACTIVITIES.map((act) => { const Icon = activityIcons[act.icon] || Key; return (
{act.title} {act.description} • IP: {act.ip}
{act.badge} {act.timestamp}
); })}
{/* Token Inspector Modal */} {showTokenModal && (
setShowTokenModal(false)} >
e.stopPropagation()} >

Session Token Inspector

This Bearer token is automatically attached to API requests in the Authorization header.

Account Email: {user?.email || 'N/A'}
User ID: {user?.userId || '101'}
Assigned Roles: {Array.isArray(user?.roles) ? user.roles.join(', ') : 'ROLE_ADMIN'}
Mode: {isDemoMode ? 'Sandbox Demo Mode' : 'Live Spring Boot'}