Create src/admin/Anomalies.tsx
Browse files- src/admin/Anomalies.tsx +22 -0
src/admin/Anomalies.tsx
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { useEffect, useState } from "react";
|
| 2 |
+
import api from "../api";
|
| 3 |
+
|
| 4 |
+
export default function Anomalies() {
|
| 5 |
+
const [data, setData] = useState<any[]>([]);
|
| 6 |
+
|
| 7 |
+
useEffect(() => {
|
| 8 |
+
api.get("/admin/security/anomalies").then((r) => setData(r.data));
|
| 9 |
+
}, []);
|
| 10 |
+
|
| 11 |
+
return (
|
| 12 |
+
<div>
|
| 13 |
+
<h1 className="font-bold mb-4">ML Anomalies</h1>
|
| 14 |
+
{data.map((l) => (
|
| 15 |
+
<div key={l._id} className="p-3 bg-red-900/40 rounded mb-2">
|
| 16 |
+
🤖 {l.action}
|
| 17 |
+
<div className="text-sm text-zinc-400">{l.ip}</div>
|
| 18 |
+
</div>
|
| 19 |
+
))}
|
| 20 |
+
</div>
|
| 21 |
+
);
|
| 22 |
+
}
|