}
diff --git a/maubot/management/frontend/src/PrivateRoute.js b/maubot/management/frontend/src/PrivateRoute.js
index 2180e96..745078d 100644
--- a/maubot/management/frontend/src/PrivateRoute.js
+++ b/maubot/management/frontend/src/PrivateRoute.js
@@ -1,15 +1,27 @@
-import React, { Component } from "react"
+// maubot - A plugin-based Matrix bot system.
+// Copyright (C) 2018 Tulir Asokan
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+import React from "react"
import { Route, Redirect } from "react-router-dom"
-const PrivateRoute = ({ component, authed, ...rest }) => (
+const PrivateRoute = ({ component, render, authed, to = "/login", ...args }) => (
authed === true
- ?
- : }
+ ? (component ? React.createElement(component, props) : render())
+ : }
/>
)
diff --git a/maubot/management/frontend/src/Spinner.js b/maubot/management/frontend/src/Spinner.js
index 4f227d4..77735f5 100644
--- a/maubot/management/frontend/src/Spinner.js
+++ b/maubot/management/frontend/src/Spinner.js
@@ -1,9 +1,11 @@
import React from "react"
-const Spinner = () => (
-