This is an automated email from the ASF dual-hosted git repository. skylark17 pushed a commit to branch SYNCOPE-1537 in repository https://gitbox.apache.org/repos/asf/syncope.git
commit f4bdffcb2715c44c422989ea27b77a25161e3f4f Author: skylark17 <skylar...@apache.org> AuthorDate: Tue Feb 25 12:50:36 2020 +0100 [SYNCOPE-1537] Password and username of LinkedAccounts now saved properly from Admin Console --- .../wizards/any/LinkedAccountCredentialsPanel.java | 52 +++++++++++++--------- .../wizards/any/LinkedAccountWizardBuilder.java | 10 ++--- 2 files changed, 36 insertions(+), 26 deletions(-) diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/LinkedAccountCredentialsPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/LinkedAccountCredentialsPanel.java index bb04ada..089968b 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/LinkedAccountCredentialsPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/LinkedAccountCredentialsPanel.java @@ -42,39 +42,42 @@ public class LinkedAccountCredentialsPanel extends WizardStep { private static final long serialVersionUID = 5116461957402341603L; - public LinkedAccountCredentialsPanel(final LinkedAccountTO linkedAccountTO) { + private final LinkedAccountTO linkedAccountTO; + + public LinkedAccountCredentialsPanel(final EntityWrapper<LinkedAccountTO> modelObject) { super(); setOutputMarkupId(true); + linkedAccountTO = modelObject.getInnerObject(); + AjaxTextFieldPanel usernameField = new AjaxTextFieldPanel( "username", "username", - new PropertyModel<>(linkedAccountTO, "username"), - false); - usernameField.setOutputMarkupId(true); + new PropertyModel<>(linkedAccountTO, "username")); FieldPanel.class.cast(usernameField).setReadOnly(StringUtils.isBlank(linkedAccountTO.getUsername())); - LinkedAccountPlainAttrProperty property = new LinkedAccountPlainAttrProperty(); - property.setOverridable(StringUtils.isNotBlank(linkedAccountTO.getUsername())); - property.setSchema("username"); - property.getValues().add(linkedAccountTO.getUsername()); - usernameField.showExternAction(checkboxToggle(property, usernameField)); - add(usernameField); + LinkedAccountPlainAttrProperty usernameProperty = new LinkedAccountPlainAttrProperty(); + usernameProperty.setOverridable(StringUtils.isNotBlank(linkedAccountTO.getUsername())); + usernameProperty.setSchema("username"); + usernameProperty.getValues().add(linkedAccountTO.getUsername()); + usernameField.showExternAction(checkboxToggle(usernameProperty, usernameField)); + add(usernameField.setOutputMarkupId(true)); AjaxPasswordFieldPanel passwordField = new AjaxPasswordFieldPanel( "password", "password", - new PropertyModel<>(linkedAccountTO, "password")); - passwordField.setOutputMarkupId(true); - passwordField.setRequired(true); + new PropertyModel<>(linkedAccountTO, "password"), + false); passwordField.setMarkupId("password"); + passwordField.setPlaceholder("password"); + passwordField.setRequired(true); FieldPanel.class.cast(passwordField).setReadOnly(StringUtils.isBlank(linkedAccountTO.getPassword())); - property = new LinkedAccountPlainAttrProperty(); - property.setOverridable(StringUtils.isNotBlank(linkedAccountTO.getPassword())); - property.setSchema("password"); - property.getValues().add(linkedAccountTO.getPassword()); - passwordField.showExternAction(checkboxToggle(property, passwordField)); - ((PasswordTextField) passwordField.getField()).setResetPassword(true); - add(passwordField); + LinkedAccountPlainAttrProperty passwordProperty = new LinkedAccountPlainAttrProperty(); + passwordProperty.setOverridable(StringUtils.isNotBlank(linkedAccountTO.getPassword())); + passwordProperty.setSchema("password"); + passwordProperty.getValues().add(linkedAccountTO.getPassword()); + passwordField.showExternAction(checkboxToggle(passwordProperty, passwordField)); + ((PasswordTextField) passwordField.getField()).setResetPassword(false); + add(passwordField.setOutputMarkupId(true)); } private FormComponent<?> checkboxToggle( @@ -98,7 +101,14 @@ public class LinkedAccountCredentialsPanel extends WizardStep { @Override protected void onUpdate(final AjaxRequestTarget target) { - panel.setReadOnly(!model.getObject()); + FieldPanel.class.cast(panel).setReadOnly(!model.getObject()); + if (!model.getObject()) { + if (property.getSchema().equals("password")) { + linkedAccountTO.setPassword(null); + } else if (property.getSchema().equals("username")) { + linkedAccountTO.setUsername(null); + } + } target.add(panel); } }); diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/LinkedAccountWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/LinkedAccountWizardBuilder.java index 7446344..8c5076d 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/LinkedAccountWizardBuilder.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/LinkedAccountWizardBuilder.java @@ -60,7 +60,7 @@ public class LinkedAccountWizardBuilder extends AjaxWizardBuilder<LinkedAccountT @Override protected WizardModel buildModelSteps(final LinkedAccountTO modelObject, final WizardModel wizardModel) { wizardModel.add(new LinkedAccountDetailsPanel(modelObject)); - wizardModel.add(new LinkedAccountCredentialsPanel(modelObject)); + wizardModel.add(new LinkedAccountCredentialsPanel(new EntityWrapper<>(modelObject))); wizardModel.add(new LinkedAccountPlainAttrsPanel(new EntityWrapper<>(modelObject), model.getObject())); wizardModel.add(new LinkedAccountPrivilegesPanel(modelObject)); return wizardModel; @@ -72,10 +72,10 @@ public class LinkedAccountWizardBuilder extends AjaxWizardBuilder<LinkedAccountT LinkedAccountPatch linkedAccountPatch = new LinkedAccountPatch.Builder().linkedAccountTO(modelObject).build(); linkedAccountPatch.setLinkedAccountTO(modelObject); - UserPatch patch = new UserPatch(); - patch.setKey(model.getObject().getKey()); - patch.getLinkedAccounts().add(linkedAccountPatch); - model.setObject(userRestClient.update(model.getObject().getETagValue(), patch).getEntity()); + UserPatch userPatch = new UserPatch(); + userPatch.setKey(model.getObject().getKey()); + userPatch.getLinkedAccounts().add(linkedAccountPatch); + model.setObject(userRestClient.update(model.getObject().getETagValue(), userPatch).getEntity()); return modelObject; }