From 9653b07ad7c6a73be1b1c1d8ce079e319727362d Mon Sep 17 00:00:00 2001 From: bsinou Date: Wed, 22 Mar 2017 20:51:22 +0100 Subject: [PATCH] Workarounds case issue in Security --- .../jcr/parts/AddPrivilegeWizard.java | 33 +++++++++++-------- .../org/argeo/cms/forms/FormPageViewer.java | 26 +++++++-------- 2 files changed, 33 insertions(+), 26 deletions(-) diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/parts/AddPrivilegeWizard.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/parts/AddPrivilegeWizard.java index 1b39812a8..576698146 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/parts/AddPrivilegeWizard.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/parts/AddPrivilegeWizard.java @@ -57,6 +57,7 @@ public class AddPrivilegeWizard extends Wizard { private Session currentSession; private String targetPath; // Chosen parameters + private String chosenDn; private User chosenUser; private String jcrPrivilege; @@ -108,7 +109,12 @@ public class AddPrivilegeWizard extends Wizard { if (!canFinish()) return false; try { - JcrUtils.addPrivilege(currentSession, targetPath, chosenUser.getName(), jcrPrivilege); + String username = chosenUser.getName(); + if (EclipseUiUtils.notEmpty(chosenDn) && chosenDn.equalsIgnoreCase(username)) + // Enable forcing the username case. TODO clean once this issue + // has been generally addressed + username = chosenDn; + JcrUtils.addPrivilege(currentSession, targetPath, username, jcrPrivilege); } catch (RepositoryException re) { throw new EclipseUiException( "Cannot set " + jcrPrivilege + " for " + chosenUser.getName() + " on " + targetPath, re); @@ -135,15 +141,15 @@ public class AddPrivilegeWizard extends Wizard { // specify subject createBoldLabel(composite, "User or group name"); - final Label groupNameLbl = new Label(composite, SWT.LEAD); - groupNameLbl.setLayoutData(EclipseUiUtils.fillWidth()); + final Label userNameLbl = new Label(composite, SWT.LEAD); + userNameLbl.setLayoutData(EclipseUiUtils.fillWidth()); Link pickUpLk = new Link(composite, SWT.LEFT); pickUpLk.setText(" Change "); createBoldLabel(composite, "User or group DN"); - final Text groupNameTxt = new Text(composite, SWT.LEAD | SWT.BORDER); - groupNameTxt.setLayoutData(EclipseUiUtils.fillWidth(2)); + final Text userNameTxt = new Text(composite, SWT.LEAD | SWT.BORDER); + userNameTxt.setLayoutData(EclipseUiUtils.fillWidth(2)); pickUpLk.addSelectionListener(new SelectionAdapter() { private static final long serialVersionUID = 1L; @@ -153,18 +159,18 @@ public class AddPrivilegeWizard extends Wizard { PickUpUserDialog dialog = new PickUpUserDialog(getShell(), "Choose a group or a user", userAdmin); if (dialog.open() == Window.OK) { chosenUser = dialog.getSelected(); - groupNameLbl.setText(UserAdminUtils.getCommonName(chosenUser)); - groupNameTxt.setText(chosenUser.getName()); + userNameLbl.setText(UserAdminUtils.getCommonName(chosenUser)); + userNameTxt.setText(chosenUser.getName()); } } }); - groupNameTxt.addFocusListener(new FocusListener() { + userNameTxt.addFocusListener(new FocusListener() { private static final long serialVersionUID = 1965498600105667738L; @Override public void focusLost(FocusEvent event) { - String dn = groupNameTxt.getText(); + String dn = userNameTxt.getText(); if (EclipseUiUtils.isEmpty(dn)) return; @@ -176,7 +182,7 @@ public class AddPrivilegeWizard extends Wizard { "DN " + dn + " is not valid.\nError message: " + e.getMessage() + "\n\t\tDo you want to try again?"); if (tryAgain) - groupNameTxt.setFocus(); + userNameTxt.setFocus(); else resetOnFail(); } @@ -185,18 +191,19 @@ public class AddPrivilegeWizard extends Wizard { boolean tryAgain = MessageDialog.openQuestion(getShell(), "Unexisting role", "User/group " + dn + " does not exist. " + "Do you want to try again?"); if (tryAgain) - groupNameTxt.setFocus(); + userNameTxt.setFocus(); else resetOnFail(); } else { chosenUser = newChosen; - groupNameLbl.setText(UserAdminUtils.getCommonName(chosenUser)); + chosenDn = dn; + userNameLbl.setText(UserAdminUtils.getCommonName(chosenUser)); } } private void resetOnFail() { String oldDn = chosenUser == null ? "" : chosenUser.getName(); - groupNameTxt.setText(oldDn); + userNameTxt.setText(oldDn); } @Override diff --git a/org.argeo.cms.ui/src/org/argeo/cms/forms/FormPageViewer.java b/org.argeo.cms.ui/src/org/argeo/cms/forms/FormPageViewer.java index 2f2181452..75e0e76e2 100644 --- a/org.argeo.cms.ui/src/org/argeo/cms/forms/FormPageViewer.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/forms/FormPageViewer.java @@ -542,19 +542,19 @@ public class FormPageViewer extends AbstractPageViewer { return body; } - // LOCAL HELPERS FOR NODE MANAGEMENT - protected Node getOrCreateNode(Node parent, String nodeType, String nodeName) throws RepositoryException { - Node node = null; - if (getCmsEditable().canEdit() && !parent.hasNode(nodeName)) { - node = JcrUtils.mkdirs(parent, nodeName, nodeType); - parent.getSession().save(); - } - - if (getCmsEditable().canEdit() || parent.hasNode(nodeName)) - node = parent.getNode(nodeName); - - return node; - } +// // LOCAL HELPERS FOR NODE MANAGEMENT +// private Node getOrCreateNode(Node parent, String nodeName, String nodeType) throws RepositoryException { +// Node node = null; +// if (getCmsEditable().canEdit() && !parent.hasNode(nodeName)) { +// node = JcrUtils.mkdirs(parent, nodeName, nodeType); +// parent.getSession().save(); +// } +// +// if (getCmsEditable().canEdit() || parent.hasNode(nodeName)) +// node = parent.getNode(nodeName); +// +// return node; +// } private SelectionListener getRemoveValueSelListener() { return new SelectionAdapter() { -- 2.30.2