From: Shannon Sterz <s.sterz@proxmox.com>
To: pdm-devel@lists.proxmox.com
Subject: [pdm-devel] [PATCH yew-comp 1/1] user panel: add a parameter to set the current product's realm
Date: Mon, 12 Jan 2026 13:24:17 +0100 [thread overview]
Message-ID: <20260112122420.228501-2-s.sterz@proxmox.com> (raw)
In-Reply-To: <20260112122420.228501-1-s.sterz@proxmox.com>
so that password and confirm password fields can be ommitted
appropriatelly when adding users and the "change password" button is
disabled appropriatelly.
Signed-off-by: Shannon Sterz <s.sterz@proxmox.com>
---
src/user_panel.rs | 33 ++++++++++++++++++++++++++-------
1 file changed, 26 insertions(+), 7 deletions(-)
diff --git a/src/user_panel.rs b/src/user_panel.rs
index c6d0b56..547fdfe 100644
--- a/src/user_panel.rs
+++ b/src/user_panel.rs
@@ -4,7 +4,9 @@ use std::rc::Rc;
use anyhow::Error;
use proxmox_client::ApiResponseData;
+use pwt_macros::builder;
use serde_json::Value;
+use yew::html::IntoPropValue;
use proxmox_access_control::types::UserWithTokens;
use proxmox_auth_api::types::Username;
@@ -89,7 +91,13 @@ async fn update_user(form_ctx: FormContext) -> Result<(), Error> {
}
#[derive(PartialEq, Properties)]
-pub struct UserPanel {}
+#[builder]
+pub struct UserPanel {
+ /// The realm of the current product. For example: "pdm"
+ #[builder(IntoPropValue, into_prop_value)]
+ #[prop_or_default]
+ product_realm: Option<AttrValue>,
+}
impl Default for UserPanel {
fn default() -> Self {
@@ -99,7 +107,7 @@ impl Default for UserPanel {
impl UserPanel {
pub fn new() -> Self {
- Self {}
+ yew::props!(Self {})
}
}
@@ -119,6 +127,7 @@ pub struct ProxmoxUserPanel {
state: LoadableComponentState<ViewState>,
store: Store<UserWithTokens>,
selection: Selection,
+ product_realm: Option<AttrValue>,
}
pwt::impl_deref_mut_property!(ProxmoxUserPanel, state, LoadableComponentState<ViewState>);
@@ -154,6 +163,7 @@ impl LoadableComponent for ProxmoxUserPanel {
state: LoadableComponentState::new(),
store,
selection,
+ product_realm: ctx.props().product_realm.clone(),
}
}
@@ -180,7 +190,11 @@ impl LoadableComponent for ProxmoxUserPanel {
let no_selection = self.selection.is_empty();
let disable_change_password = self
.get_selected_user()
- .map(|user| user.user.userid.realm().as_str() == "pam")
+ .and_then(|user| {
+ self.product_realm
+ .as_ref()
+ .map(|p| p != user.user.userid.realm().as_str())
+ })
.unwrap_or(no_selection);
let toolbar = Toolbar::new()
@@ -279,8 +293,9 @@ impl ProxmoxUserPanel {
}
fn create_add_dialog(&self, ctx: &LoadableComponentContext<Self>) -> Html {
+ let product_realm = self.product_realm.clone();
EditWindow::new(tr!("Add") + ": " + &tr!("User"))
- .renderer(add_user_input_panel)
+ .renderer(move |form_ctx| add_user_input_panel(form_ctx, &product_realm))
.on_submit(create_user)
.on_done(ctx.link().change_view_callback(|_| None))
.on_change(check_confirm_password)
@@ -484,8 +499,12 @@ fn password_change_input_panel(_form_ctx: &FormContext) -> Html {
.into()
}
-fn add_user_input_panel(form_ctx: &FormContext) -> Html {
- let is_pam = form_ctx.read().get_field_text("realm") == "pam";
+fn add_user_input_panel(form_ctx: &FormContext, product_realm: &Option<AttrValue>) -> Html {
+ let realm = form_ctx.read().get_field_text("realm");
+ let is_product_realm = product_realm
+ .as_deref()
+ .map(|p| p == realm)
+ .unwrap_or_default();
let mut panel = InputPanel::new()
.padding(4)
@@ -506,7 +525,7 @@ fn add_user_input_panel(form_ctx: &FormContext) -> Html {
.submit(false),
);
- if !is_pam {
+ if is_product_realm {
panel = panel
.with_field(
tr!("Password"),
--
2.47.3
_______________________________________________
pdm-devel mailing list
pdm-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel
next prev parent reply other threads:[~2026-01-12 12:24 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-12 12:24 [pdm-devel] [PATCH datacenter-manager/yew-comp 0/4] fix adding users manually for openid/ldap/ad realms Shannon Sterz
2026-01-12 12:24 ` Shannon Sterz [this message]
2026-01-12 12:24 ` [pdm-devel] [PATCH datacenter-manager 1/3] fix #7182: server: auth: add dummy openid authenticator Shannon Sterz
2026-01-12 12:24 ` [pdm-devel] [PATCH datacenter-manager 2/3] ui: run cargo fmt Shannon Sterz
2026-01-12 12:24 ` [pdm-devel] [PATCH datacenter-manager 3/3] ui: set prodcut realm so that the add user dialogs are rendered properly Shannon Sterz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260112122420.228501-2-s.sterz@proxmox.com \
--to=s.sterz@proxmox.com \
--cc=pdm-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.