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<UserAdmin> userAdminServiceReference;
+ private UserTransaction userTransaction;
// First effort to simplify UX while managing users and groups
public final static boolean COMMIT_ON_SAVE = true;
*/
public UserTransaction beginTransactionIfNeeded() {
try {
- UserTransaction userTransaction = getUserTransaction();
+ // UserTransaction userTransaction = getUserTransaction();
if (userTransaction.getStatus() == Status.STATUS_NO_TRANSACTION) {
userTransaction.begin();
// UiAdminUtils.notifyTransactionStateChange(userTransaction);
*/
public void commitOrNotifyTransactionStateChange() {
try {
- UserTransaction userTransaction = getUserTransaction();
+ // UserTransaction userTransaction = getUserTransaction();
if (userTransaction.getStatus() == Status.STATUS_NO_TRANSACTION)
return;
for (UserAdminListener listener : listeners)
listener.roleChanged(event);
}
+
+ public Map<String, String> getKnownBaseDns(boolean onlyWritable) {
+ Map<String, String> dns = new HashMap<String, String>();
+ for (String uri : userAdminServiceReference.getPropertyKeys()) {
+ if (!uri.startsWith("/"))
+ continue;
+ Dictionary<String, ?> 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<UserAdmin> userAdminServiceReference) {
+ this.userAdminServiceReference = userAdminServiceReference;
+ }
+
}
\ No newline at end of file
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);
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);
}
}
}
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;
}
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);
}
}
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
+}
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;
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));
if (EclipseUiUtils.notEmpty(bdn)) {
Dictionary<String, ?> 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;
}
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;
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);
if (EclipseUiUtils.notEmpty(bdn)) {
Dictionary<String, ?> 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;
}
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;
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);
@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,
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();
}
};
getSection().setText(
"Members of group "
+ UserAdminUtils.getProperty(group,
- LdifName.cn.name()));
+ LdapAttrs.cn.name()));
userViewer.refresh();
super.refresh();
}
// 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) {
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;
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);
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("(|");
} 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(")");
}
public void setUserAdminWrapper(UserAdminWrapper userAdminWrapper) {
this.userAdminWrapper = userAdminWrapper;
}
-}
\ No newline at end of file
+}
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;
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);
}
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());
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;
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);
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;
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()) {
@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();
}
// 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 */
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;
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);
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());
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 */
@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
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 */
@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
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;
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
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;
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;
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);
}
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<User> users = new ArrayList<User>();
for (Role role : roles)
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;
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);
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;
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;
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;
}
/** 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);
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, "
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
if (user == null)
return null;
else
- return getProperty(user, LdifName.mail.name());
+ return getProperty(user, LdapAttrs.mail.name());
}
// VARIOUS UI HELPERS
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();
throw new CmsException("Cannot parse LDAP name " + dn, e);
}
}
-}
\ No newline at end of file
+}
+++ /dev/null
-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<UserAdmin> userAdminServiceReference;
- private UserTransaction userTransaction;
-
- /* USER ADMIN LISTENER MANAGEMENT */
- List<UserAdminListener> listeners = new ArrayList<UserAdminListener>();
-
- // 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<String, String> getKnownBaseDns(boolean onlyWritable) {
- Map<String, String> dns = new HashMap<String, String>();
- for (String uri : userAdminServiceReference.getPropertyKeys()) {
- if (!uri.startsWith("/"))
- continue;
- Dictionary<String, ?> 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<UserAdmin> userAdminServiceReference) {
- this.userAdminServiceReference = userAdminServiceReference;
- }
-}
\ No newline at end of file