remove user admin page and move admin pages to subdir

This commit is contained in:
Izalia Mae 2025-02-14 10:07:34 -05:00
parent 2ee871fd81
commit c2fd96b758
11 changed files with 7 additions and 172 deletions

View file

@ -84,6 +84,7 @@ relay = [
"data/*",
"frontend/*",
"frontend/page/*",
"frontend/page/admin/*",
"frontend/static/*",
]

View file

@ -31,7 +31,6 @@
{{menu_item("Whitelist", "/admin/whitelist")}}
{{menu_item("Domain Bans", "/admin/domain_bans")}}
{{menu_item("Software Bans", "/admin/software_bans")}}
{{menu_item("Users", "/admin/users")}}
{{menu_item("Config", "/admin/config")}}
{{menu_item("Logout", "/logout")}}

View file

@ -1,47 +0,0 @@
-extends "base.haml"
-set page="Users"
-block content
%details.section
%summary << Add User
#add-item
%label(for="new-username") << Username
%input(id="new-username" name="username" placeholder="Username" autocomplete="off")
%label(for="new-password") << Password
%input(id="new-password" type="password" placeholder="Password" autocomplete="off")
%label(for="new-password2") << Password Again
%input(id="new-password2" type="password" placeholder="Password Again" autocomplete="off")
%label(for="new-handle") << Handle
%input(id="new-handle" type="email" placeholder="handle" autocomplete="off")
%input#new-user(type="button" value="Add User")
%fieldset.section
%legend << Users
.data-table
%table#users
%thead
%tr
%td.username << Username
%td.handle << Handle
%td.date << Joined
%td.remove
%tbody
-for user in users
%tr(id="{{user.username}}")
%td.username
=user.username
%td.handle
=user.handle or "n/a"
%td.date
=user.created.strftime("%Y-%m-%d")
%td.remove
%a(href="#" title="Remove User") << &#10006;

View file

@ -680,103 +680,6 @@ function page_software_ban() {
}
function page_user() {
function add_row_listeners(row) {
row.querySelector(".remove a").addEventListener("click", async (event) => {
event.preventDefault();
await del_user(row.id);
});
}
async function add_user() {
var elems = {
username: document.getElementById("new-username"),
password: document.getElementById("new-password"),
password2: document.getElementById("new-password2"),
handle: document.getElementById("new-handle")
}
var values = {
username: elems.username.value.trim(),
password: elems.password.value.trim(),
password2: elems.password2.value.trim(),
handle: elems.handle.value.trim()
}
if (values.username === "" | values.password === "" | values.password2 === "") {
toast("Username, password, and password2 are required");
return;
}
if (values.password !== values.password2) {
toast("Passwords do not match");
return;
}
try {
var user = await request("POST", "v1/user", values);
} catch (err) {
toast(err);
return
}
var row = append_table_row(document.querySelector("fieldset.section table"), user.username, {
domain: user.username,
handle: user.handle ? self.handle : "n/a",
date: get_date_string(user.created),
remove: `<a href="#" title="Delete User">&#10006;</a>`
});
add_row_listeners(row);
elems.username.value = null;
elems.password.value = null;
elems.password2.value = null;
elems.handle.value = null;
document.querySelector("details.section").open = false;
toast("Created user", "message");
}
async function del_user(username) {
try {
await request("DELETE", "v1/user", {"username": username});
} catch (error) {
toast(error);
return;
}
document.getElementById(username).remove();
toast("Deleted user", "message");
}
document.querySelector("#new-user").addEventListener("click", async (event) => {
await add_user();
});
for (var elem of document.querySelectorAll("#add-item input")) {
elem.addEventListener("keydown", async (event) => {
if (event.which === 13) {
await add_user();
}
});
}
for (var row of document.querySelector("#users").rows) {
if (!row.querySelector(".remove a")) {
continue;
}
add_row_listeners(row);
}
}
function page_whitelist() {
function add_row_listeners(row) {
row.querySelector(".remove a").addEventListener("click", async (event) => {

View file

@ -709,7 +709,7 @@ async def handle_whitelist_del(app: Application, request: Request, domain: str)
return objects.Message("Removed domain from whitelist")
# remove /api/v1/user endpoints?
# remove /api/v1/user endpoints in 0.4.0
@Route(HttpMethod.GET, "/api/v1/user", "User", True)
async def handle_users_get(app: Application, request: Request) -> list[objects.User]:
with app.database.session(False) as s:

View file

@ -74,7 +74,7 @@ async def handle_admin_instances(
if message:
context["message"] = message
return Response.new_template(200, "page/admin-instances.haml", request, context)
return Response.new_template(200, "page/admin/instances.haml", request, context)
@register_route(HttpMethod.GET, "/admin/whitelist")
@ -95,7 +95,7 @@ async def handle_admin_whitelist(
if message:
context["message"] = message
return Response.new_template(200, "page/admin-whitelist.haml", request, context)
return Response.new_template(200, "page/admin/whitelist.haml", request, context)
@register_route(HttpMethod.GET, "/admin/domain_bans")
@ -116,7 +116,7 @@ async def handle_admin_instance_bans(
if message:
context["message"] = message
return Response.new_template(200, "page/admin-domain_bans.haml", request, context)
return Response.new_template(200, "page/admin/domain_bans.haml", request, context)
@register_route(HttpMethod.GET, "/admin/software_bans")
@ -137,28 +137,7 @@ async def handle_admin_software_bans(
if message:
context["message"] = message
return Response.new_template(200, "page/admin-software_bans.haml", request, context)
@register_route(HttpMethod.GET, "/admin/users")
async def handle_admin_users(
app: Application,
request: Request,
error: str | None = None,
message: str | None = None) -> Response:
with app.database.session() as conn:
context: dict[str, Any] = {
"users": tuple(conn.execute("SELECT * FROM users ORDER BY username ASC"))
}
if error:
context["error"] = error
if message:
context["message"] = message
return Response.new_template(200, "page/admin-users.haml", request, context)
return Response.new_template(200, "page/admin/software_bans.haml", request, context)
@register_route(HttpMethod.GET, "/admin/config")
@ -184,7 +163,7 @@ async def handle_admin_config(
}
}
return Response.new_template(200, "page/admin-config.haml", request, context)
return Response.new_template(200, "page/admin/config.haml", request, context)
@register_route(HttpMethod.GET, "/manifest.json")