From fd42ef16e1b1b6f7fd68f853914e6eba187c6b3c Mon Sep 17 00:00:00 2001 From: Ethan Dalool Date: Fri, 1 Oct 2021 14:14:10 -0700 Subject: [PATCH] Add admin endpoints. --- .../backend/endpoints/__init__.py | 2 + .../backend/endpoints/admin_endpoints.py | 25 +++++++++++ frontends/etiquette_flask/static/js/api.js | 10 +++++ .../etiquette_flask/templates/admin.html | 45 +++++++++++++++++++ 4 files changed, 82 insertions(+) create mode 100644 frontends/etiquette_flask/backend/endpoints/admin_endpoints.py create mode 100644 frontends/etiquette_flask/templates/admin.html diff --git a/frontends/etiquette_flask/backend/endpoints/__init__.py b/frontends/etiquette_flask/backend/endpoints/__init__.py index 5cd9b44..469e5a0 100644 --- a/frontends/etiquette_flask/backend/endpoints/__init__.py +++ b/frontends/etiquette_flask/backend/endpoints/__init__.py @@ -1,3 +1,4 @@ +from . import admin_endpoints from . import album_endpoints from . import basic_endpoints from . import bookmark_endpoints @@ -6,6 +7,7 @@ from . import tag_endpoints from . import user_endpoints __all__ = [ + 'admin_endpoints', 'album_endpoints', 'basic_endpoints', 'bookmark_endpoints', diff --git a/frontends/etiquette_flask/backend/endpoints/admin_endpoints.py b/frontends/etiquette_flask/backend/endpoints/admin_endpoints.py new file mode 100644 index 0000000..8689589 --- /dev/null +++ b/frontends/etiquette_flask/backend/endpoints/admin_endpoints.py @@ -0,0 +1,25 @@ +import flask; from flask import request + +from voussoirkit import flasktools + +from .. import common + +site = common.site +session_manager = common.session_manager + +#################################################################################################### + +@site.route('/admin') +def get_admin(): + if not request.is_localhost: + flask.abort(403) + + return common.render_template(request, 'admin.html') + +@site.route('/admin/reload_config', methods=['POST']) +def post_reload_config(): + if not request.is_localhost: + return flasktools.make_json_response({}, status=403) + + common.P.load_config() + return flasktools.make_json_response({}) diff --git a/frontends/etiquette_flask/static/js/api.js b/frontends/etiquette_flask/static/js/api.js index 3eef555..4341196 100644 --- a/frontends/etiquette_flask/static/js/api.js +++ b/frontends/etiquette_flask/static/js/api.js @@ -1,5 +1,15 @@ const api = {}; +/**************************************************************************************************/ +api.admin = {}; + +api.admin.reload_config = +function reload_config(callback) +{ + const url = "/admin/reload_config"; + return common.post(url, null, callback); +} + /**************************************************************************************************/ api.albums = {}; diff --git a/frontends/etiquette_flask/templates/admin.html b/frontends/etiquette_flask/templates/admin.html new file mode 100644 index 0000000..2de87b4 --- /dev/null +++ b/frontends/etiquette_flask/templates/admin.html @@ -0,0 +1,45 @@ + + + + {% import "header.html" as header %} + Admin control + + + + + {% if theme %}{% endif %} + + + + + + + + +{{header.make_header(session=session)}} +
+
+ +
+
+ + + + +