Yaltopia-Ticket-Admin/src/pages/admin/security/index.tsx
2026-01-09 19:25:54 +03:00

88 lines
3.1 KiB
TypeScript

import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
import { Button } from "@/components/ui/button"
import { Shield, AlertTriangle, Key, Gauge, Users } from "lucide-react"
import { useNavigate } from "react-router-dom"
export default function SecurityPage() {
const navigate = useNavigate()
return (
<div className="space-y-6">
<h2 className="text-3xl font-bold">Security</h2>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
<Card className="cursor-pointer hover:bg-accent transition-colors" onClick={() => navigate('/admin/security/failed-logins')}>
<CardHeader>
<CardTitle className="flex items-center gap-2">
<AlertTriangle className="w-5 h-5" />
Failed Logins
</CardTitle>
</CardHeader>
<CardContent>
<p className="text-sm text-muted-foreground">
View and manage failed login attempts
</p>
</CardContent>
</Card>
<Card className="cursor-pointer hover:bg-accent transition-colors" onClick={() => navigate('/admin/security/suspicious')}>
<CardHeader>
<CardTitle className="flex items-center gap-2">
<Shield className="w-5 h-5" />
Suspicious Activity
</CardTitle>
</CardHeader>
<CardContent>
<p className="text-sm text-muted-foreground">
Monitor suspicious IPs and emails
</p>
</CardContent>
</Card>
<Card className="cursor-pointer hover:bg-accent transition-colors" onClick={() => navigate('/admin/security/api-keys')}>
<CardHeader>
<CardTitle className="flex items-center gap-2">
<Key className="w-5 h-5" />
API Keys
</CardTitle>
</CardHeader>
<CardContent>
<p className="text-sm text-muted-foreground">
Manage API keys and tokens
</p>
</CardContent>
</Card>
<Card className="cursor-pointer hover:bg-accent transition-colors" onClick={() => navigate('/admin/security/rate-limits')}>
<CardHeader>
<CardTitle className="flex items-center gap-2">
<Gauge className="w-5 h-5" />
Rate Limits
</CardTitle>
</CardHeader>
<CardContent>
<p className="text-sm text-muted-foreground">
View rate limit violations
</p>
</CardContent>
</Card>
<Card className="cursor-pointer hover:bg-accent transition-colors" onClick={() => navigate('/admin/security/sessions')}>
<CardHeader>
<CardTitle className="flex items-center gap-2">
<Users className="w-5 h-5" />
Active Sessions
</CardTitle>
</CardHeader>
<CardContent>
<p className="text-sm text-muted-foreground">
Manage active user sessions
</p>
</CardContent>
</Card>
</div>
</div>
)
}