diff --git a/src/App.js b/src/App.js
index ce37344..9f3ed8e 100644
--- a/src/App.js
+++ b/src/App.js
@@ -5,6 +5,7 @@ import authProvider from "./synapse/authProvider";
import dataProvider from "./synapse/dataProvider";
import { UserList, UserCreate, UserEdit } from "./components/users";
import { RoomList } from "./components/rooms";
+import { ConnectionsShow } from "./components/connections";
import LoginPage from "./components/LoginPage";
import UserIcon from "@material-ui/icons/Group";
import { ViewListIcon as RoomIcon } from "@material-ui/icons/ViewList";
@@ -36,6 +37,7 @@ const App = () => (
icon={UserIcon}
/>
+
);
diff --git a/src/components/connections.js b/src/components/connections.js
new file mode 100644
index 0000000..c6b0f0f
--- /dev/null
+++ b/src/components/connections.js
@@ -0,0 +1,44 @@
+import React from "react";
+import {
+ Datagrid,
+ Show,
+ SimpleForm,
+ TextField,
+ ArrayField,
+ DateField,
+} from "react-admin";
+
+
+export const ConnectionsShow = props => (
+
+
+
+
+
+
+
+
+
+
+
+
+);
\ No newline at end of file
diff --git a/src/components/users.js b/src/components/users.js
index 068b59e..febd115 100644
--- a/src/components/users.js
+++ b/src/components/users.js
@@ -14,6 +14,7 @@ import {
TextInput,
ReferenceField,
regex,
+ ShowButton,
} from "react-admin";
const UserFilter = props => (
@@ -56,6 +57,7 @@ export const UserList = props => (
+
);
@@ -87,4 +89,4 @@ export const UserEdit = props => (
-);
+);
\ No newline at end of file
diff --git a/src/i18n/de.js b/src/i18n/de.js
index 6626ae7..b479911 100644
--- a/src/i18n/de.js
+++ b/src/i18n/de.js
@@ -38,5 +38,13 @@ export default {
joined_members: "Mitglieder",
},
},
+ connections: {
+ name: "Verbindungen",
+ fields: {
+ last_seen: "Datum",
+ ip: "IP-Adresse",
+ user_agent: "User Agent",
+ },
+ },
},
};
diff --git a/src/i18n/en.js b/src/i18n/en.js
index 0683213..3b27b76 100644
--- a/src/i18n/en.js
+++ b/src/i18n/en.js
@@ -38,5 +38,13 @@ export default {
joined_members: "Members",
},
},
+ connections: {
+ name: "Connections",
+ fields: {
+ last_seen: "Date",
+ ip: "IP address",
+ user_agent: "User agent",
+ },
+ },
},
};
diff --git a/src/synapse/dataProvider.js b/src/synapse/dataProvider.js
index e144bf7..b5dcdd9 100644
--- a/src/synapse/dataProvider.js
+++ b/src/synapse/dataProvider.js
@@ -42,6 +42,14 @@ const resourceMap = {
return json.total_rooms;
},
},
+ connections: {
+ path: "/_synapse/admin/v1/whois",
+ map: c => ({
+ ...c,
+ id: c.user_id,
+ }),
+ data: "connections",
+ },
};
function filterNullValues(key, value) {