aboutsummaryrefslogtreecommitdiff
path: root/ui/src
diff options
context:
space:
mode:
Diffstat (limited to 'ui/src')
-rw-r--r--ui/src/components/admin.rs12
-rw-r--r--ui/src/components/mod.rs5
-rw-r--r--ui/src/components/user.rs5
-rw-r--r--ui/src/old/admin/user.rs81
4 files changed, 16 insertions, 87 deletions
diff --git a/ui/src/components/admin.rs b/ui/src/components/admin.rs
index cddb0e2..cd691a2 100644
--- a/ui/src/components/admin.rs
+++ b/ui/src/components/admin.rs
@@ -7,7 +7,7 @@
use crate::RenderInfo;
use jellycommon::{
jellyobject::Object,
- routes::{u_admin_import, u_admin_import_post, u_admin_log},
+ routes::{u_admin_import, u_admin_import_post, u_admin_log, u_admin_users, u_user},
*,
};
use jellyui_locale::tr;
@@ -20,7 +20,8 @@ markup::define!(
li{a[href=u_admin_log(false)] { @tr(ri.lang, "admin.log.full") }}
}
- a[href=u_admin_import()] { h2 { @tr(ri.lang, "admin.import.title") }}
+ a[href=u_admin_import()] { h2 { @tr(ri.lang, "admin.import") }}
+ a[href=u_admin_users()] { h2 { @tr(ri.lang, "admin.users") }}
}
AdminImport<'a>(ri: &'a RenderInfo<'a>, data: Object<'a>) {
@@ -55,4 +56,11 @@ markup::define!(
pre { @data.get(ADMIN_INFO_TEXT) }
}
+ AdminUserList<'a>(ri: &'a RenderInfo<'a>, data: Object<'a>) {
+ h1 { @tr(ri.lang, "admin.users") }
+ ul { @for u in data.iter(ADMIN_USER_LIST_ITEM) {
+ li { a[href=u_user(u.get(USER_LOGIN).unwrap_or_default())] { @u.get(USER_LOGIN) } }
+ }}
+ }
+
);
diff --git a/ui/src/components/mod.rs b/ui/src/components/mod.rs
index dde77b0..e7e5f9c 100644
--- a/ui/src/components/mod.rs
+++ b/ui/src/components/mod.rs
@@ -18,7 +18,7 @@ pub mod user;
use crate::{
RenderInfo,
components::{
- admin::{AdminDashboard, AdminImport, AdminInfo},
+ admin::{AdminDashboard, AdminImport, AdminInfo, AdminUserList},
login::{AccountLogin, AccountLogout, AccountSetPassword},
message::Message,
node_list::NodeList,
@@ -64,5 +64,8 @@ define! {
@if let Some(user) = view.get(VIEW_USER_SETTINGS) {
@UserSettings { ri, user }
}
+ @if let Some(data) = view.get(VIEW_ADMIN_USER_LIST) {
+ @AdminUserList { ri, data }
+ }
}
}
diff --git a/ui/src/components/user.rs b/ui/src/components/user.rs
index cf1c123..22b296e 100644
--- a/ui/src/components/user.rs
+++ b/ui/src/components/user.rs
@@ -17,8 +17,8 @@ markup::define! {
h1 { @tr(ri.lang, "settings") }
h2 { @tr(ri.lang, "settings.account") }
- a.switch_account[href=u_account_login()] { button { "Switch Account" } }
- a.switch_account[href=u_account_logout()] { button { "Log out" } }
+ a[href=u_account_login()] { button { "Switch Account" } }
+ a[href=u_account_logout()] { button { "Log out" } }
p { @tr(ri.lang, "tag.Ulgn") ": " @user.get(USER_LOGIN) }
form[method="POST", action=u_account_settings()] {
label[for="name"] { @tr(ri.lang, "tag.Unam") }
@@ -41,7 +41,6 @@ markup::define! {
input[type="range", id="accent", name="theme_accent", min=0, max=360, step=1, value=user.get(USER_THEME_ACCENT)];
input[type="submit", value=tr(ri.lang, "settings.update")];
}
-
// h2 { @tr(ri.lang, "settings.appearance") }
// form[method="POST", action=u_account_settings()] {
// fieldset {
diff --git a/ui/src/old/admin/user.rs b/ui/src/old/admin/user.rs
deleted file mode 100644
index e4a8975..0000000
--- a/ui/src/old/admin/user.rs
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- This file is part of jellything (https://codeberg.org/metamuffin/jellything)
- which is licensed under the GNU Affero General Public License (version 3); see /COPYING.
- Copyright (C) 2026 metamuffin <metamuffin.org>
-*/
-
-use crate::{FlashM, Page, scaffold::FlashDisplay};
-use jellycommon::routes::{
- u_admin_user, u_admin_user_permission, u_admin_user_remove, u_admin_users,
-};
-
-impl Page for AdminUserPage<'_> {
- fn title(&self) -> String {
- "User Management".to_string()
- }
- fn to_render(&self) -> markup::DynRender<'_> {
- markup::new!(@self)
- }
-}
-impl Page for AdminUsersPage<'_> {
- fn title(&self) -> String {
- "User Management".to_string()
- }
- fn to_render(&self) -> markup::DynRender<'_> {
- markup::new!(@self)
- }
-}
-
-markup::define! {
- AdminUsersPage<'a>(lang: &'a Language, users: &'a [User], flash: &'a FlashM) {
- h1 { @trs(lang, "admin.users.title") }
- @FlashDisplay { flash }
- h2 { @trs(lang, "admin.users.user_list") }
- ul { @for u in *users {
- li {
- a[href=u_admin_user(&u.name)] { @format!("{:?}", u.display_name) " (" @u.name ")" }
- }
- }}
- }
- AdminUserPage<'a>(lang: &'a Language, user: &'a User, flash: &'a FlashM) {
- h1 { @format!("{:?}", user.display_name) " (" @user.name ")" }
- a[href=u_admin_users()] { @trs(lang, "admin.users.return_to_list") }
- @FlashDisplay { flash }
- form[method="POST", action=u_admin_user_remove(&user.name)] {
- // input[type="text", name="name", value=&user.name, hidden];
- input.danger[type="submit", value="Remove user(!)"];
- }
-
- h2 { "Permissions" }
- @PermissionDisplay { perms: &user.permissions }
-
- form[method="POST", action=u_admin_user_permission(&user.name)] {
- // input[type="text", name="name", value=&user.name, hidden];
- fieldset.perms {
- legend { "Permission" }
- @for p in UserPermission::ALL_ENUMERABLE {
- label {
- input[type="radio", name="permission", value=serde_json::to_string(p).unwrap()];
- @format!("{p}")
- } br;
- }
- }
- fieldset.perms {
- legend { "State" }
- label { input[type="radio", name="action", value="unset"]; "Unset" } br;
- label { input[type="radio", name="action", value="grant"]; "Grant" } br;
- label { input[type="radio", name="action", value="revoke"]; "Revoke" } br;
- }
- input[type="submit", value="Update"];
- }
- }
- PermissionDisplay<'a>(perms: &'a PermissionSet) {
- ul { @for (perm,grant) in &perms.0 {
- @if *grant {
- li[class="perm-grant"] { @format!("Allow {}", perm) }
- } else {
- li[class="perm-revoke"] { @format!("Deny {}", perm) }
- }
- }}
- }
-}