summaryrefslogtreecommitdiff
path: root/web/source/panels/admin
diff options
context:
space:
mode:
authorLibravatar tobi <31960611+tsmethurst@users.noreply.github.com>2022-08-08 10:40:51 +0200
committerLibravatar GitHub <noreply@github.com>2022-08-08 10:40:51 +0200
commit117888cf59c10330671f43bbce949a3984761c91 (patch)
tree432e62b06206f315048e719ef2bb0e39c5f658ae /web/source/panels/admin
parent[chore] Update js deps (#744) (diff)
downloadgotosocial-117888cf59c10330671f43bbce949a3984761c91.tar.xz
[feature] Add first iteration of a user panel at `/user` (#736)
* start work on user panel * parse source first before checking if empty form * newline * set avi + header nicely * add posts settings * render signin a bit nicer on mobile * return OK json on successful change * return unauthorized on bad password * clarify message on insecure password * make login a bit prettier * add alt text + border round image previews * add logout button * add password change * styling updates * redirect /auth/edit to /user * update tests * fix validation tests * better labels, link to more info * make submit button generic component * move submit button inside forms * add autocomplete labels to password fields * fix indentation (thx eslint) * update eslintrc * eslint: no-unescaped-entities * initial deduplication between user and admin panel * add default status/post format setting * user panel styling for inputs * update user panel styling, include normalize css * add placeholder text * input padding Co-authored-by: f0x <f0x@cthu.lu>
Diffstat (limited to 'web/source/panels/admin')
-rw-r--r--web/source/panels/admin/auth.js96
-rw-r--r--web/source/panels/admin/index.js39
-rw-r--r--web/source/panels/admin/style.css35
3 files changed, 4 insertions, 166 deletions
diff --git a/web/source/panels/admin/auth.js b/web/source/panels/admin/auth.js
deleted file mode 100644
index e26ff06b9..000000000
--- a/web/source/panels/admin/auth.js
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- GoToSocial
- Copyright (C) 2021-2022 GoToSocial Authors admin@gotosocial.org
-
- 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 <http://www.gnu.org/licenses/>.
-*/
-
-"use strict";
-
-const Promise = require("bluebird");
-const React = require("react");
-const oauthLib = require("../../lib/oauth");
-
-module.exports = function Auth({setOauth}) {
- const [ instance, setInstance ] = React.useState("");
-
- React.useEffect(() => {
- let isStillMounted = true;
- // check if current domain runs an instance
- let thisUrl = new URL(window.location.origin);
- thisUrl.pathname = "/api/v1/instance";
- Promise.try(() => {
- return fetch(thisUrl.href);
- }).then((res) => {
- if (res.status == 200) {
- return res.json();
- }
- }).then((json) => {
- if (json && json.uri && isStillMounted) {
- setInstance(json.uri);
- }
- }).catch((e) => {
- console.log("error checking instance response:", e);
- });
-
- return () => {
- // cleanup function
- isStillMounted = false;
- };
- }, []);
-
- function doAuth() {
- return Promise.try(() => {
- return new URL(instance);
- }).catch(TypeError, () => {
- return new URL(`https://${instance}`);
- }).then((parsedURL) => {
- let url = parsedURL.toString();
- let oauth = oauthLib({
- instance: url,
- client_name: "GoToSocial Admin Panel",
- scope: ["admin"],
- website: window.location.href
- });
- setOauth(oauth);
- setInstance(url);
- return oauth.register().then(() => {
- return oauth;
- });
- }).then((oauth) => {
- return oauth.authorize();
- }).catch((e) => {
- console.log("error authenticating:", e);
- });
- }
-
- function updateInstance(e) {
- if (e.key == "Enter") {
- doAuth();
- } else {
- setInstance(e.target.value);
- }
- }
-
- return (
- <section className="login">
- <h1>OAUTH Login:</h1>
- <form onSubmit={(e) => e.preventDefault()}>
- <label htmlFor="instance">Instance: </label>
- <input value={instance} onChange={updateInstance} id="instance"/>
- <button onClick={doAuth}>Authenticate</button>
- </form>
- </section>
- );
-}; \ No newline at end of file
diff --git a/web/source/panels/admin/index.js b/web/source/panels/admin/index.js
index 05ab8e583..0fc1601eb 100644
--- a/web/source/panels/admin/index.js
+++ b/web/source/panels/admin/index.js
@@ -22,45 +22,14 @@ const Promise = require("bluebird");
const React = require("react");
const ReactDom = require("react-dom");
-const oauthLib = require("../../lib/oauth.js");
-const Auth = require("./auth");
+const createPanel = require("../lib/panel");
+
const Settings = require("./settings");
const Blocks = require("./blocks");
+require("../base.css");
require("./style.css");
-function App() {
- const [oauth, setOauth] = React.useState();
- const [hasAuth, setAuth] = React.useState(false);
- const [oauthState, setOauthState] = React.useState(localStorage.getItem("oauth"));
-
- React.useEffect(() => {
- let state = localStorage.getItem("oauth");
- if (state != undefined) {
- state = JSON.parse(state);
- let restoredOauth = oauthLib(state.config, state);
- Promise.try(() => {
- return restoredOauth.callback();
- }).then(() => {
- setAuth(true);
- });
- setOauth(restoredOauth);
- }
- }, []);
-
- if (!hasAuth && oauth && oauth.isAuthorized()) {
- setAuth(true);
- }
-
- if (oauth && oauth.isAuthorized()) {
- return <AdminPanel oauth={oauth} />;
- } else if (oauthState != undefined) {
- return "processing oauth...";
- } else {
- return <Auth setOauth={setOauth} />;
- }
-}
-
function AdminPanel({oauth}) {
/*
Features: (issue #78)
@@ -92,4 +61,4 @@ function Logout({oauth}) {
);
}
-ReactDom.render(<App/>, document.getElementById("root")); \ No newline at end of file
+createPanel("GoToSocial Admin Panel", ["admin"], AdminPanel); \ No newline at end of file
diff --git a/web/source/panels/admin/style.css b/web/source/panels/admin/style.css
index c9d2f09b4..01195437f 100644
--- a/web/source/panels/admin/style.css
+++ b/web/source/panels/admin/style.css
@@ -16,22 +16,6 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-body {
- grid-template-rows: auto 1fr;
-}
-
-.capitalize {
- text-transform: capitalize;
-}
-
-section {
- margin-bottom: 1rem;
-}
-
-input, select, textarea {
- box-sizing: border-box;
-}
-
section.info {
form {
grid-template-columns: auto 1fr;
@@ -120,22 +104,3 @@ section.blocks {
gap: 0.5rem;
}
}
-
-.error {
- font-weight: bold;
-}
-
-.hidden {
- display: none;
-}
-
-.notImplemented {
- border: 2px solid rgb(70, 79, 88);
- background: repeating-linear-gradient(
- -45deg,
- #525c66,
- #525c66 10px,
- rgb(70, 79, 88) 10px,
- rgb(70, 79, 88) 20px
- ) !important;
-} \ No newline at end of file