From: Bruno Sinou Date: Fri, 7 Oct 2016 20:43:20 +0000 (+0000) Subject: Clean userAdmin related classes X-Git-Tag: argeo-commons-2.1.49~3 X-Git-Url: http://git.argeo.org/?a=commitdiff_plain;h=2aa7488102120eb82bcb7c1ac53188b9424eeace;p=lgpl%2Fargeo-commons.git Clean userAdmin related classes git-svn-id: https://svn.argeo.org/commons/trunk@9259 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/UserAdminWrapper.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/UserAdminWrapper.java index 2f59e8642..63d8f4180 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/UserAdminWrapper.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/UserAdminWrapper.java @@ -1,18 +1,28 @@ package org.argeo.cms.ui.workbench.internal.useradmin; import java.util.ArrayList; +import java.util.Dictionary; +import java.util.HashMap; import java.util.List; +import java.util.Map; import javax.transaction.Status; import javax.transaction.UserTransaction; import org.argeo.cms.CmsException; +import org.argeo.node.NodeConstants; +import org.argeo.osgi.useradmin.UserAdminConf; +import org.osgi.framework.ServiceReference; +import org.osgi.service.useradmin.UserAdmin; import org.osgi.service.useradmin.UserAdminEvent; import org.osgi.service.useradmin.UserAdminListener; /** Centralise interaction with the UserAdmin in this bundle */ -public class UserAdminWrapper extends - org.argeo.cms.util.useradmin.UserAdminWrapper { +public class UserAdminWrapper { + + private UserAdmin userAdmin; + private ServiceReference userAdminServiceReference; + private UserTransaction userTransaction; // First effort to simplify UX while managing users and groups public final static boolean COMMIT_ON_SAVE = true; @@ -27,7 +37,7 @@ public class UserAdminWrapper extends */ public UserTransaction beginTransactionIfNeeded() { try { - UserTransaction userTransaction = getUserTransaction(); + // UserTransaction userTransaction = getUserTransaction(); if (userTransaction.getStatus() == Status.STATUS_NO_TRANSACTION) { userTransaction.begin(); // UiAdminUtils.notifyTransactionStateChange(userTransaction); @@ -46,7 +56,7 @@ public class UserAdminWrapper extends */ public void commitOrNotifyTransactionStateChange() { try { - UserTransaction userTransaction = getUserTransaction(); + // UserTransaction userTransaction = getUserTransaction(); if (userTransaction.getStatus() == Status.STATUS_NO_TRANSACTION) return; @@ -74,4 +84,45 @@ public class UserAdminWrapper extends for (UserAdminListener listener : listeners) listener.roleChanged(event); } + + public Map getKnownBaseDns(boolean onlyWritable) { + Map dns = new HashMap(); + for (String uri : userAdminServiceReference.getPropertyKeys()) { + if (!uri.startsWith("/")) + continue; + Dictionary props = UserAdminConf.uriAsProperties(uri); + String readOnly = UserAdminConf.readOnly.getValue(props); + String baseDn = UserAdminConf.baseDn.getValue(props); + + if (onlyWritable && "true".equals(readOnly)) + continue; + if (baseDn.equalsIgnoreCase(NodeConstants.ROLES_BASEDN)) + continue; + dns.put(baseDn, uri); + } + return dns; + } + + public UserAdmin getUserAdmin() { + return userAdmin; + } + + public UserTransaction getUserTransaction() { + return userTransaction; + } + + /* DEPENDENCY INJECTION */ + public void setUserAdmin(UserAdmin userAdmin) { + this.userAdmin = userAdmin; + } + + public void setUserTransaction(UserTransaction userTransaction) { + this.userTransaction = userTransaction; + } + + public void setUserAdminServiceReference( + ServiceReference userAdminServiceReference) { + this.userAdminServiceReference = userAdminServiceReference; + } + } \ No newline at end of file diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/UsersUtils.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/UsersUtils.java index 7edfb8118..55db40e03 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/UsersUtils.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/UsersUtils.java @@ -10,17 +10,21 @@ import javax.security.auth.Subject; import javax.security.auth.x500.X500Principal; import org.argeo.eclipse.ui.EclipseUiException; -import org.argeo.osgi.useradmin.LdifName; +import org.argeo.naming.LdapAttrs; +import org.argeo.node.NodeConstants; import org.osgi.service.useradmin.Role; import org.osgi.service.useradmin.User; -/** Utility methods to manage user concepts in the ui.workbench bundle */ +/** + * Utility methods to manage user concepts in the ui.workbench bundle + * + * FIXME refactor amd centralise userAdminUtils + */ +@Deprecated public class UsersUtils { - // TODO this constant is defined in the CMS - public final static String ROLES_BASEDN = "ou=roles,ou=node"; public final static boolean isCurrentUser(User user) { - String userName = getProperty(user, LdifName.dn.name()); + String userName = getProperty(user, LdapAttrs.DN); try { LdapName selfUserName = getLdapName(); LdapName userLdapName = new LdapName(userName); @@ -29,8 +33,8 @@ public class UsersUtils { else return false; } catch (InvalidNameException e) { - throw new EclipseUiException("User " + user + " has an unvalid dn: " - + userName, e); + throw new EclipseUiException("User " + user + + " has an unvalid dn: " + userName, e); } } @@ -48,13 +52,13 @@ public class UsersUtils { } public final static String getCommonName(User user) { - return getProperty(user, LdifName.cn.name()); + return getProperty(user, LdapAttrs.cn.name()); } /** Simply retrieves a display name of the relevant domain */ public final static String getDomainName(User user) { - String dn = (String) user.getProperties().get(LdifName.dn.name()); - if (dn.endsWith(ROLES_BASEDN)) + String dn = (String) user.getProperties().get(LdapAttrs.DN); + if (dn.endsWith(NodeConstants.ROLES_BASEDN)) return "System roles"; try { LdapName name; @@ -74,7 +78,8 @@ public class UsersUtils { } return dname; } catch (InvalidNameException e) { - throw new EclipseUiException("Unable to get domain name for " + dn, e); + throw new EclipseUiException("Unable to get domain name for " + dn, + e); } } @@ -85,16 +90,4 @@ public class UsersUtils { else return ""; } - - /* - * INTERNAL METHODS: Below methods are meant to stay here and are not part - * of a potential generic backend to manage the useradmin - */ - public final static boolean notNull(String string) { - if (string == null) - return false; - else - return !"".equals(string.trim()); - } - -} \ No newline at end of file +} diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/commands/NewGroup.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/commands/NewGroup.java index 48f0016e3..5013bbbdc 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/commands/NewGroup.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/commands/NewGroup.java @@ -23,8 +23,8 @@ import org.argeo.cms.ui.workbench.WorkbenchUiPlugin; import org.argeo.cms.ui.workbench.internal.useradmin.UserAdminWrapper; import org.argeo.eclipse.ui.EclipseUiUtils; import org.argeo.eclipse.ui.dialogs.ErrorFeedback; +import org.argeo.naming.LdapAttrs; import org.argeo.node.ArgeoNames; -import org.argeo.osgi.useradmin.LdifName; import org.argeo.osgi.useradmin.UserAdminConf; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; @@ -94,7 +94,7 @@ public class NewGroup extends AbstractHandler { Dictionary props = group.getProperties(); String descStr = descriptionTxt.getText(); if (EclipseUiUtils.notEmpty(descStr)) - props.put(LdifName.description.name(), descStr); + props.put(LdapAttrs.description.name(), descStr); userAdminWrapper.commitOrNotifyTransactionStateChange(); userAdminWrapper.notifyListeners(new UserAdminEvent(null, UserAdminEvent.ROLE_CREATED, group)); @@ -206,7 +206,7 @@ public class NewGroup extends AbstractHandler { if (EclipseUiUtils.notEmpty(bdn)) { Dictionary props = UserAdminConf.uriAsProperties(dns .get(bdn)); - String dn = LdifName.cn.name() + "=" + cn + "," + String dn = LdapAttrs.cn.name() + "=" + cn + "," + UserAdminConf.groupBase.getValue(props) + "," + bdn; return dn; } diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/commands/NewUser.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/commands/NewUser.java index c259153f6..c786608eb 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/commands/NewUser.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/commands/NewUser.java @@ -29,8 +29,8 @@ import org.argeo.cms.ui.workbench.internal.useradmin.UserAdminWrapper; import org.argeo.cms.util.useradmin.UserAdminUtils; import org.argeo.eclipse.ui.EclipseUiUtils; import org.argeo.eclipse.ui.dialogs.ErrorFeedback; +import org.argeo.naming.LdapAttrs; import org.argeo.node.ArgeoNames; -import org.argeo.osgi.useradmin.LdifName; import org.argeo.osgi.useradmin.UserAdminConf; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; @@ -115,20 +115,20 @@ public class NewUser extends AbstractHandler { String lastNameStr = lastNameTxt.getText(); if (EclipseUiUtils.notEmpty(lastNameStr)) - props.put(LdifName.sn.name(), lastNameStr); + props.put(LdapAttrs.sn.name(), lastNameStr); String firstNameStr = firstNameTxt.getText(); if (EclipseUiUtils.notEmpty(firstNameStr)) - props.put(LdifName.givenName.name(), firstNameStr); + props.put(LdapAttrs.givenName.name(), firstNameStr); String cn = UserAdminUtils.buildDefaultCn(firstNameStr, lastNameStr); if (EclipseUiUtils.notEmpty(cn)) - props.put(LdifName.cn.name(), cn); + props.put(LdapAttrs.cn.name(), cn); String mailStr = primaryMailTxt.getText(); if (EclipseUiUtils.notEmpty(mailStr)) - props.put(LdifName.mail.name(), mailStr); + props.put(LdapAttrs.mail.name(), mailStr); char[] password = mainUserInfo.getPassword(); user.getCredentials().put(null, password); @@ -279,7 +279,7 @@ public class NewUser extends AbstractHandler { if (EclipseUiUtils.notEmpty(bdn)) { Dictionary props = UserAdminConf.uriAsProperties(dns .get(bdn)); - String dn = LdifName.uid.name() + "=" + uid + "," + String dn = LdapAttrs.uid.name() + "=" + uid + "," + UserAdminConf.userBase.getValue(props) + "," + bdn; return dn; } diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/GroupMainPage.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/GroupMainPage.java index 0c8e55593..2f5ae2055 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/GroupMainPage.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/GroupMainPage.java @@ -36,8 +36,8 @@ import org.argeo.cms.util.useradmin.UserAdminUtils; import org.argeo.eclipse.ui.ColumnDefinition; import org.argeo.eclipse.ui.EclipseUiUtils; import org.argeo.eclipse.ui.parts.LdifUsersTable; +import org.argeo.naming.LdapAttrs; import org.argeo.node.ArgeoNames; -import org.argeo.osgi.useradmin.LdifName; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.ToolBarManager; import org.eclipse.jface.dialogs.MessageDialog; @@ -114,7 +114,7 @@ public class GroupMainPage extends FormPage implements ArgeoNames { dnTxt.setEnabled(false); final Text cnTxt = createLT(body, "Common Name", - UserAdminUtils.getProperty(group, LdifName.cn.name())); + UserAdminUtils.getProperty(group, LdapAttrs.cn.name())); cnTxt.setEnabled(false); Label descLbl = new Label(body, SWT.LEAD); @@ -147,7 +147,7 @@ public class GroupMainPage extends FormPage implements ArgeoNames { @SuppressWarnings("unchecked") public void commit(boolean onSave) { - group.getProperties().put(LdifName.description.name(), + group.getProperties().put(LdapAttrs.description.name(), descTxt.getText()); // Enable common name ? // editor.setProperty(UserAdminConstants.KEY_CN, @@ -160,9 +160,9 @@ public class GroupMainPage extends FormPage implements ArgeoNames { refreshFormTitle(group); dnTxt.setText(group.getName()); cnTxt.setText(UserAdminUtils.getProperty(group, - LdifName.cn.name())); + LdapAttrs.cn.name())); descTxt.setText(UserAdminUtils.getProperty(group, - LdifName.description.name())); + LdapAttrs.description.name())); super.refresh(); } }; @@ -347,7 +347,7 @@ public class GroupMainPage extends FormPage implements ArgeoNames { getSection().setText( "Members of group " + UserAdminUtils.getProperty(group, - LdifName.cn.name())); + LdapAttrs.cn.name())); userViewer.refresh(); super.refresh(); } @@ -450,7 +450,7 @@ public class GroupMainPage extends FormPage implements ArgeoNames { // LOCAL HELPERS private void refreshFormTitle(Group group) { getManagedForm().getForm().setText( - UserAdminUtils.getProperty(group, LdifName.cn.name())); + UserAdminUtils.getProperty(group, LdapAttrs.cn.name())); } private Composite addSection(FormToolkit tk, Composite parent, String title) { diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/GroupsView.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/GroupsView.java index ec20a04e7..8cb284134 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/GroupsView.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/GroupsView.java @@ -34,9 +34,10 @@ import org.argeo.cms.util.useradmin.UserAdminUtils; import org.argeo.eclipse.ui.ColumnDefinition; import org.argeo.eclipse.ui.EclipseUiUtils; import org.argeo.eclipse.ui.parts.LdifUsersTable; +import org.argeo.naming.LdapAttrs; +import org.argeo.naming.LdapObjs; import org.argeo.node.ArgeoNames; import org.argeo.node.NodeConstants; -import org.argeo.osgi.useradmin.LdifName; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.dnd.DND; @@ -145,8 +146,8 @@ public class GroupsView extends ViewPart implements ArgeoNames { private boolean showSystemRoles = false; - private final String[] knownProps = { LdifName.uid.name(), - LdifName.cn.name(), LdifName.dn.name() }; + private final String[] knownProps = { LdapAttrs.uid.name(), + LdapAttrs.cn.name(), LdapAttrs.DN }; public MyUserTableViewer(Composite parent, int style) { super(parent, style); @@ -184,12 +185,11 @@ public class GroupsView extends ViewPart implements ArgeoNames { tmpBuilder.append("*)"); } if (tmpBuilder.length() > 1) { - builder.append("(&(").append(LdifName.objectClass.name()) - .append("=").append(LdifName.groupOfNames.name()) + builder.append("(&(").append(LdapAttrs.objectClass.name()) + .append("=").append(LdapObjs.groupOfNames.name()) .append(")"); if (!showSystemRoles) - builder.append("(!(").append(LdifName.dn.name()) - .append("=*") + builder.append("(!(").append(LdapAttrs.DN).append("=*") .append(NodeConstants.ROLES_BASEDN) .append("))"); builder.append("(|"); @@ -198,17 +198,18 @@ public class GroupsView extends ViewPart implements ArgeoNames { } else { if (!showSystemRoles) builder.append("(&(") - .append(LdifName.objectClass.name()) + .append(LdapAttrs.objectClass.name()) .append("=") - .append(LdifName.groupOfNames.name()) - .append(")(!(").append(LdifName.dn.name()) + .append(LdapObjs.groupOfNames.name()) + .append(")(!(").append(LdapAttrs.DN) .append("=*") .append(NodeConstants.ROLES_BASEDN) .append(")))"); else - builder.append("(").append(LdifName.objectClass.name()) + builder.append("(") + .append(LdapAttrs.objectClass.name()) .append("=") - .append(LdifName.groupOfNames.name()) + .append(LdapObjs.groupOfNames.name()) .append(")"); } @@ -249,4 +250,4 @@ public class GroupsView extends ViewPart implements ArgeoNames { public void setUserAdminWrapper(UserAdminWrapper userAdminWrapper) { this.userAdminWrapper = userAdminWrapper; } -} \ No newline at end of file +} diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UserBatchUpdateWizard.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UserBatchUpdateWizard.java index ff113d1dd..fb2c3a365 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UserBatchUpdateWizard.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UserBatchUpdateWizard.java @@ -20,9 +20,9 @@ import org.argeo.cms.util.useradmin.UserAdminUtils; import org.argeo.eclipse.ui.ColumnDefinition; import org.argeo.eclipse.ui.EclipseUiUtils; import org.argeo.eclipse.ui.parts.LdifUsersTable; -import org.argeo.node.ArgeoNames; +import org.argeo.naming.LdapAttrs; +import org.argeo.naming.LdapObjs; import org.argeo.node.NodeConstants; -import org.argeo.osgi.useradmin.LdifName; import org.eclipse.jface.dialogs.IPageChangeProvider; import org.eclipse.jface.dialogs.IPageChangedListener; import org.eclipse.jface.dialogs.MessageDialog; @@ -451,10 +451,10 @@ public class UserBatchUpdateWizard extends Wizard { private class ChooseUserTableViewer extends LdifUsersTable { private static final long serialVersionUID = 5080437561015853124L; - private final String[] knownProps = { LdifName.uid.name(), - LdifName.dn.name(), LdifName.cn.name(), - LdifName.givenName.name(), LdifName.sn.name(), - LdifName.mail.name() }; + private final String[] knownProps = { LdapAttrs.uid.name(), + LdapAttrs.DN, LdapAttrs.cn.name(), + LdapAttrs.givenName.name(), LdapAttrs.sn.name(), + LdapAttrs.mail.name() }; public ChooseUserTableViewer(Composite parent, int style) { super(parent, style); @@ -478,16 +478,17 @@ public class UserBatchUpdateWizard extends Wizard { } if (tmpBuilder.length() > 1) { builder.append("(&(") - .append(LdifName.objectClass.name()) + .append(LdapAttrs.objectClass.name()) .append("=") - .append(LdifName.inetOrgPerson.name()) + .append(LdapObjs.inetOrgPerson.name()) .append(")(|"); builder.append(tmpBuilder.toString()); builder.append("))"); } else - builder.append("(").append(LdifName.objectClass.name()) + builder.append("(") + .append(LdapAttrs.objectClass.name()) .append("=") - .append(LdifName.inetOrgPerson.name()) + .append(LdapObjs.inetOrgPerson.name()) .append(")"); roles = userAdminWrapper.getUserAdmin().getRoles( builder.toString()); diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UserEditor.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UserEditor.java index 85ed08160..6e90339c6 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UserEditor.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UserEditor.java @@ -23,7 +23,7 @@ import org.argeo.cms.ui.workbench.WorkbenchUiPlugin; import org.argeo.cms.ui.workbench.internal.useradmin.UiUserAdminListener; import org.argeo.cms.ui.workbench.internal.useradmin.UserAdminWrapper; import org.argeo.cms.util.useradmin.UserAdminUtils; -import org.argeo.osgi.useradmin.LdifName; +import org.argeo.naming.LdapAttrs; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; @@ -100,7 +100,7 @@ public class UserEditor extends FormEditor { void updateEditorTitle(String title) { if (title == null) { String commonName = UserAdminUtils.getProperty(user, - LdifName.cn.name()); + LdapAttrs.cn.name()); title = "".equals(commonName) ? user.getName() : commonName; } setPartName(title); diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UserMainPage.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UserMainPage.java index d96dfbc90..2ff5f510f 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UserMainPage.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UserMainPage.java @@ -34,9 +34,9 @@ import org.argeo.cms.util.useradmin.UserAdminUtils; import org.argeo.eclipse.ui.ColumnDefinition; import org.argeo.eclipse.ui.EclipseUiUtils; import org.argeo.eclipse.ui.parts.LdifUsersTable; +import org.argeo.naming.LdapAttrs; import org.argeo.node.ArgeoNames; import org.argeo.node.NodeConstants; -import org.argeo.osgi.useradmin.LdifName; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.ToolBarManager; import org.eclipse.jface.resource.ImageDescriptor; @@ -119,21 +119,21 @@ public class UserMainPage extends FormPage implements ArgeoNames { body.setLayout(new GridLayout(2, false)); final Text distinguishedName = createLT(tk, body, "User Name", - UserAdminUtils.getProperty(user, LdifName.uid.name())); + UserAdminUtils.getProperty(user, LdapAttrs.uid.name())); distinguishedName.setEnabled(false); final Text commonName = createLT(tk, body, "Common Name", - UserAdminUtils.getProperty(user, LdifName.cn.name())); + UserAdminUtils.getProperty(user, LdapAttrs.cn.name())); commonName.setEnabled(false); final Text firstName = createLT(tk, body, "First name", - UserAdminUtils.getProperty(user, LdifName.givenName.name())); + UserAdminUtils.getProperty(user, LdapAttrs.givenName.name())); final Text lastName = createLT(tk, body, "Last name", - UserAdminUtils.getProperty(user, LdifName.sn.name())); + UserAdminUtils.getProperty(user, LdapAttrs.sn.name())); final Text email = createLT(tk, body, "Email", - UserAdminUtils.getProperty(user, LdifName.mail.name())); + UserAdminUtils.getProperty(user, LdapAttrs.mail.name())); // create form part (controller) AbstractFormPart part = new SectionPart((Section) body.getParent()) { @@ -156,28 +156,29 @@ public class UserMainPage extends FormPage implements ArgeoNames { @SuppressWarnings("unchecked") public void commit(boolean onSave) { // TODO Sanity checks (mail validity...) - user.getProperties().put(LdifName.givenName.name(), + user.getProperties().put(LdapAttrs.givenName.name(), firstName.getText()); - user.getProperties() - .put(LdifName.sn.name(), lastName.getText()); - user.getProperties().put(LdifName.cn.name(), + user.getProperties().put(LdapAttrs.sn.name(), + lastName.getText()); + user.getProperties().put(LdapAttrs.cn.name(), commonName.getText()); - user.getProperties().put(LdifName.mail.name(), email.getText()); + user.getProperties() + .put(LdapAttrs.mail.name(), email.getText()); super.commit(onSave); } @Override public void refresh() { distinguishedName.setText(UserAdminUtils.getProperty(user, - LdifName.uid.name())); + LdapAttrs.uid.name())); commonName.setText(UserAdminUtils.getProperty(user, - LdifName.cn.name())); + LdapAttrs.cn.name())); firstName.setText(UserAdminUtils.getProperty(user, - LdifName.givenName.name())); + LdapAttrs.givenName.name())); lastName.setText(UserAdminUtils.getProperty(user, - LdifName.sn.name())); + LdapAttrs.sn.name())); email.setText(UserAdminUtils.getProperty(user, - LdifName.mail.name())); + LdapAttrs.mail.name())); refreshFormTitle(user); super.refresh(); } @@ -488,7 +489,7 @@ public class UserMainPage extends FormPage implements ArgeoNames { // LOCAL HELPERS private void refreshFormTitle(User group) { getManagedForm().getForm().setText( - UserAdminUtils.getProperty(group, LdifName.cn.name())); + UserAdminUtils.getProperty(group, LdapAttrs.cn.name())); } /** Appends a section with a title */ diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UsersView.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UsersView.java index 9e8f9d197..e2b1c0eec 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UsersView.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UsersView.java @@ -32,9 +32,10 @@ import org.argeo.cms.util.useradmin.UserAdminUtils; import org.argeo.eclipse.ui.ColumnDefinition; import org.argeo.eclipse.ui.EclipseUiUtils; import org.argeo.eclipse.ui.parts.LdifUsersTable; +import org.argeo.naming.LdapAttrs; +import org.argeo.naming.LdapObjs; import org.argeo.node.ArgeoNames; import org.argeo.node.NodeConstants; -import org.argeo.osgi.useradmin.LdifName; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.dnd.DND; @@ -120,10 +121,10 @@ public class UsersView extends ViewPart implements ArgeoNames { private class MyUserTableViewer extends LdifUsersTable { private static final long serialVersionUID = 8467999509931900367L; - private final String[] knownProps = { LdifName.uid.name(), - LdifName.dn.name(), LdifName.cn.name(), - LdifName.givenName.name(), LdifName.sn.name(), - LdifName.mail.name() }; + private final String[] knownProps = { LdapAttrs.DN, + LdapAttrs.uid.name(), LdapAttrs.cn.name(), + LdapAttrs.givenName.name(), LdapAttrs.sn.name(), + LdapAttrs.mail.name() }; public MyUserTableViewer(Composite parent, int style) { super(parent, style); @@ -146,14 +147,14 @@ public class UsersView extends ViewPart implements ArgeoNames { tmpBuilder.append("*)"); } if (tmpBuilder.length() > 1) { - builder.append("(&(").append(LdifName.objectClass.name()) - .append("=").append(LdifName.inetOrgPerson.name()) + builder.append("(&(").append(LdapAttrs.objectClass.name()) + .append("=").append(LdapObjs.inetOrgPerson.name()) .append(")(|"); builder.append(tmpBuilder.toString()); builder.append("))"); } else - builder.append("(").append(LdifName.objectClass.name()) - .append("=").append(LdifName.inetOrgPerson.name()) + builder.append("(").append(LdapAttrs.objectClass.name()) + .append("=").append(LdapObjs.inetOrgPerson.name()) .append(")"); roles = userAdminWrapper.getUserAdmin().getRoles( builder.toString()); diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/CommonNameLP.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/CommonNameLP.java index 06e8ededa..0874ee703 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/CommonNameLP.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/CommonNameLP.java @@ -1,7 +1,7 @@ package org.argeo.cms.ui.workbench.internal.useradmin.providers; import org.argeo.cms.util.useradmin.UserAdminUtils; -import org.argeo.osgi.useradmin.LdifName; +import org.argeo.naming.LdapAttrs; import org.osgi.service.useradmin.User; /** Simply declare a label provider that returns the common name of a user */ @@ -10,6 +10,6 @@ public class CommonNameLP extends UserAdminAbstractLP { @Override public String getText(User user) { - return UserAdminUtils.getProperty(user, LdifName.cn.name()); + return UserAdminUtils.getProperty(user, LdapAttrs.cn.name()); } } \ No newline at end of file diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/MailLP.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/MailLP.java index 4d52ca114..944e8d12b 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/MailLP.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/MailLP.java @@ -1,7 +1,7 @@ package org.argeo.cms.ui.workbench.internal.useradmin.providers; import org.argeo.cms.util.useradmin.UserAdminUtils; -import org.argeo.osgi.useradmin.LdifName; +import org.argeo.naming.LdapAttrs; import org.osgi.service.useradmin.User; /** Simply declare a label provider that returns the Primary Mail of a user */ @@ -10,6 +10,6 @@ public class MailLP extends UserAdminAbstractLP { @Override public String getText(User user) { - return UserAdminUtils.getProperty(user, LdifName.mail.name()); + return UserAdminUtils.getProperty(user, LdapAttrs.mail.name()); } } \ No newline at end of file diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/UserFilter.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/UserFilter.java index 04c275647..c19d57b20 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/UserFilter.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/UserFilter.java @@ -3,8 +3,8 @@ package org.argeo.cms.ui.workbench.internal.useradmin.providers; import static org.argeo.eclipse.ui.EclipseUiUtils.notEmpty; import org.argeo.cms.util.useradmin.UserAdminUtils; +import org.argeo.naming.LdapAttrs; import org.argeo.node.NodeConstants; -import org.argeo.osgi.useradmin.LdifName; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerFilter; import org.osgi.service.useradmin.User; @@ -15,10 +15,10 @@ public class UserFilter extends ViewerFilter { private String searchString; private boolean showSystemRole = true; - private final String[] knownProps = { LdifName.dn.name(), - LdifName.cn.name(), LdifName.givenName.name(), LdifName.sn.name(), - LdifName.uid.name(), LdifName.description.name(), - LdifName.mail.name() }; + private final String[] knownProps = { LdapAttrs.DN, LdapAttrs.cn.name(), + LdapAttrs.givenName.name(), LdapAttrs.sn.name(), + LdapAttrs.uid.name(), LdapAttrs.description.name(), + LdapAttrs.mail.name() }; public void setSearchText(String s) { // ensure that the value can be used for matching diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/useradmin/PickUpUserDialog.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/useradmin/PickUpUserDialog.java index aa2312829..22d75db72 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/useradmin/PickUpUserDialog.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/useradmin/PickUpUserDialog.java @@ -18,12 +18,13 @@ package org.argeo.cms.ui.workbench.useradmin; import java.util.ArrayList; import java.util.List; -import org.argeo.cms.ui.workbench.internal.useradmin.UsersUtils; import org.argeo.eclipse.ui.ColumnDefinition; import org.argeo.eclipse.ui.EclipseUiException; import org.argeo.eclipse.ui.EclipseUiUtils; import org.argeo.eclipse.ui.parts.LdifUsersTable; -import org.argeo.osgi.useradmin.LdifName; +import org.argeo.naming.LdapAttrs; +import org.argeo.naming.LdapObjs; +import org.argeo.node.NodeConstants; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.dialogs.TrayDialog; import org.eclipse.jface.viewers.DoubleClickEvent; @@ -172,8 +173,8 @@ public class PickUpUserDialog extends TrayDialog { private class MyUserTableViewer extends LdifUsersTable { private static final long serialVersionUID = 8467999509931900367L; - private final String[] knownProps = { LdifName.uid.name(), - LdifName.cn.name(), LdifName.dn.name() }; + private final String[] knownProps = { LdapAttrs.uid.name(), + LdapAttrs.cn.name(), LdapAttrs.DN }; private Button showSystemRoleBtn; private Button showUserBtn; @@ -219,16 +220,16 @@ public class PickUpUserDialog extends TrayDialog { filterBuilder.append("*)"); } - String typeStr = "(" + LdifName.objectClass.name() + "=" - + LdifName.groupOfNames.name() + ")"; + String typeStr = "(" + LdapAttrs.objectClass.name() + "=" + + LdapObjs.groupOfNames.name() + ")"; if ((showUserBtn.getSelection())) - typeStr = "(|(" + LdifName.objectClass.name() + "=" - + LdifName.inetOrgPerson.name() + ")" + typeStr + typeStr = "(|(" + LdapAttrs.objectClass.name() + "=" + + LdapObjs.inetOrgPerson.name() + ")" + typeStr + ")"; if (!showSystemRoleBtn.getSelection()) - typeStr = "(& " + typeStr + "(!(" + LdifName.dn.name() - + "=*" + UsersUtils.ROLES_BASEDN + ")))"; + typeStr = "(& " + typeStr + "(!(" + LdapAttrs.DN + "=*" + + NodeConstants.ROLES_BASEDN + ")))"; if (filterBuilder.length() > 1) { builder.append("(&" + typeStr); @@ -240,8 +241,8 @@ public class PickUpUserDialog extends TrayDialog { } roles = userAdmin.getRoles(builder.toString()); } catch (InvalidSyntaxException e) { - throw new EclipseUiException("Unable to get roles with filter: " - + filter, e); + throw new EclipseUiException( + "Unable to get roles with filter: " + filter, e); } List users = new ArrayList(); for (Role role : roles) diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/useradmin/UserLP.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/useradmin/UserLP.java index 592af3cd5..05e3756a5 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/useradmin/UserLP.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/useradmin/UserLP.java @@ -6,6 +6,7 @@ import javax.naming.ldap.LdapName; import org.argeo.cms.ui.workbench.internal.useradmin.UsersImages; import org.argeo.cms.ui.workbench.internal.useradmin.UsersUtils; import org.argeo.eclipse.ui.EclipseUiException; +import org.argeo.node.NodeConstants; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.jface.viewers.ColumnLabelProvider; import org.eclipse.swt.SWT; @@ -37,6 +38,7 @@ class UserLP extends ColumnLabelProvider { public Font getFont(Object element) { // Self as bold try { + // LdapName selfUserName = new LdapName(CurrentUser.getUsername()); LdapName selfUserName = UsersUtils.getLdapName(); String userName = ((User) element).getName(); LdapName userLdapName = new LdapName(userName); @@ -65,7 +67,7 @@ class UserLP extends ColumnLabelProvider { if (COL_ICON.equals(currType)) { User user = (User) element; String dn = user.getName(); - if (dn.endsWith(UsersUtils.ROLES_BASEDN)) + if (dn.endsWith(NodeConstants.ROLES_BASEDN)) return UsersImages.ICON_ROLE; else if (user.getType() == Role.GROUP) return UsersImages.ICON_GROUP; diff --git a/org.argeo.cms.ui/src/org/argeo/cms/util/useradmin/UserAdminUtils.java b/org.argeo.cms.ui/src/org/argeo/cms/util/useradmin/UserAdminUtils.java index 01ec0d831..6684b261f 100644 --- a/org.argeo.cms.ui/src/org/argeo/cms/util/useradmin/UserAdminUtils.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/util/useradmin/UserAdminUtils.java @@ -16,8 +16,8 @@ import org.argeo.cms.ui.CmsView; import org.argeo.cms.util.CmsUtils; import org.argeo.eclipse.ui.EclipseUiUtils; import org.argeo.jcr.JcrUtils; +import org.argeo.naming.LdapAttrs; import org.argeo.node.NodeConstants; -import org.argeo.osgi.useradmin.LdifName; import org.osgi.service.useradmin.Group; import org.osgi.service.useradmin.Role; import org.osgi.service.useradmin.User; @@ -36,9 +36,9 @@ public class UserAdminUtils { public final static String getUsername(User user) { String username = null; if (user instanceof Group) - username = getProperty(user, LdifName.cn.name()); + username = getProperty(user, LdapAttrs.cn.name()); else - username = getProperty(user, LdifName.uid.name()); + username = getProperty(user, LdapAttrs.uid.name()); return username; } @@ -97,7 +97,7 @@ public class UserAdminUtils { /** Simply checks if current user is the same as the passed one */ public static boolean isCurrentUser(User user) { - String userName = getProperty(user, LdifName.dn.name()); + String userName = getProperty(user, LdapAttrs.DN); try { LdapName selfUserName = getCurrentUserLdapName(); LdapName userLdapName = new LdapName(userName); @@ -162,8 +162,8 @@ public class UserAdminUtils { public static String getUserUid(String dn) { LdapName ldapName = getLdapName(dn); Rdn last = ldapName.getRdn(ldapName.size() - 1); - if (last.getType().toLowerCase().equals(LdifName.uid.name()) - || last.getType().toLowerCase().equals(LdifName.cn.name())) + if (last.getType().toLowerCase().equals(LdapAttrs.uid.name()) + || last.getType().toLowerCase().equals(LdapAttrs.cn.name())) return (String) last.getValue(); else throw new CmsException("Cannot retrieve user uid, " @@ -178,9 +178,9 @@ public class UserAdminUtils { Role user = getRole(userAdmin, getLdapName(dn)); if (user == null) return getUserUid(dn); - String displayName = getProperty(user, LdifName.displayName.name()); + String displayName = getProperty(user, LdapAttrs.displayName.name()); if (EclipseUiUtils.isEmpty(displayName)) - displayName = getProperty(user, LdifName.cn.name()); + displayName = getProperty(user, LdapAttrs.cn.name()); if (EclipseUiUtils.isEmpty(displayName)) return getUserUid(dn); else @@ -196,7 +196,7 @@ public class UserAdminUtils { if (user == null) return null; else - return getProperty(user, LdifName.mail.name()); + return getProperty(user, LdapAttrs.mail.name()); } // VARIOUS UI HELPERS @@ -216,7 +216,7 @@ public class UserAdminUtils { int i = 0; loop: while (i < rdns.size()) { Rdn currrRdn = rdns.get(i); - if (!LdifName.dc.name().equals(currrRdn.getType())) + if (!LdapAttrs.dc.name().equals(currrRdn.getType())) break loop; else { String currVal = (String) currrRdn.getValue(); @@ -239,4 +239,4 @@ public class UserAdminUtils { throw new CmsException("Cannot parse LDAP name " + dn, e); } } -} \ No newline at end of file +} diff --git a/org.argeo.cms.ui/src/org/argeo/cms/util/useradmin/UserAdminWrapper.java b/org.argeo.cms.ui/src/org/argeo/cms/util/useradmin/UserAdminWrapper.java deleted file mode 100644 index d38e77eb4..000000000 --- a/org.argeo.cms.ui/src/org/argeo/cms/util/useradmin/UserAdminWrapper.java +++ /dev/null @@ -1,105 +0,0 @@ -package org.argeo.cms.util.useradmin; - -import java.util.ArrayList; -import java.util.Dictionary; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.transaction.Status; -import javax.transaction.UserTransaction; - -import org.argeo.cms.CmsException; -import org.argeo.node.NodeConstants; -import org.argeo.osgi.useradmin.UserAdminConf; -import org.osgi.framework.ServiceReference; -import org.osgi.service.useradmin.UserAdmin; -import org.osgi.service.useradmin.UserAdminEvent; -import org.osgi.service.useradmin.UserAdminListener; - -/** - * Base useradmin wrapper. Implementing application might extends to add - * business specific behaviour - */ -public abstract class UserAdminWrapper { - // private Log log = LogFactory.getLog(UserAdminWrapper.class); - - private UserAdmin userAdmin; - private ServiceReference userAdminServiceReference; - private UserTransaction userTransaction; - - /* USER ADMIN LISTENER MANAGEMENT */ - List listeners = new ArrayList(); - - // TODO implement safer mechanism - public void addListener(UserAdminListener userAdminListener) { - if (!listeners.contains(userAdminListener)) - listeners.add(userAdminListener); - } - - /** - * Starts a transaction if none already exists and notify the userAdmin - * listeners.Must be called from the UI Thread. - */ - public UserTransaction beginTransactionIfNeeded() { - try { - if (userTransaction.getStatus() == Status.STATUS_NO_TRANSACTION) { - userTransaction.begin(); - } - return userTransaction; - } catch (Exception e) { - throw new CmsException("Unable to begin transaction", e); - } - } - - // Expose this? - public void removeListener(UserAdminListener userAdminListener) { - if (listeners.contains(userAdminListener)) - listeners.remove(userAdminListener); - } - - public void notifyListeners(UserAdminEvent event) { - for (UserAdminListener listener : listeners) - listener.roleChanged(event); - } - - public Map getKnownBaseDns(boolean onlyWritable) { - Map dns = new HashMap(); - for (String uri : userAdminServiceReference.getPropertyKeys()) { - if (!uri.startsWith("/")) - continue; - Dictionary props = UserAdminConf.uriAsProperties(uri); - String readOnly = UserAdminConf.readOnly.getValue(props); - String baseDn = UserAdminConf.baseDn.getValue(props); - - if (onlyWritable && "true".equals(readOnly)) - continue; - if (baseDn.equalsIgnoreCase(NodeConstants.ROLES_BASEDN)) - continue; - dns.put(baseDn, uri); - } - return dns; - } - - public UserAdmin getUserAdmin() { - return userAdmin; - } - - public UserTransaction getUserTransaction() { - return userTransaction; - } - - /* DEPENDENCY INJECTION */ - public void setUserAdmin(UserAdmin userAdmin) { - this.userAdmin = userAdmin; - } - - public void setUserTransaction(UserTransaction userTransaction) { - this.userTransaction = userTransaction; - } - - public void setUserAdminServiceReference( - ServiceReference userAdminServiceReference) { - this.userAdminServiceReference = userAdminServiceReference; - } -} \ No newline at end of file