diff options
Diffstat (limited to 'ui')
| -rw-r--r-- | ui/src/components/admin.rs | 12 | ||||
| -rw-r--r-- | ui/src/components/mod.rs | 5 | ||||
| -rw-r--r-- | ui/src/components/user.rs | 5 | ||||
| -rw-r--r-- | ui/src/old/admin/user.rs | 81 |
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) } - } - }} - } -} |