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;
     }

Reply via email to