import org.argeo.cms.ui.workbench.WorkbenchUiPlugin;
import org.argeo.cms.ui.workbench.internal.useradmin.UserAdminWrapper;
import org.argeo.cms.ui.workbench.internal.useradmin.parts.UserEditorInput;
-import org.argeo.cms.util.useradmin.UserAdminUtils;
+import org.argeo.cms.util.UserAdminUtils;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
/** Delete the selected groups */
public class DeleteGroups extends AbstractHandler {
- public final static String ID = WorkbenchUiPlugin.PLUGIN_ID
- + ".deleteGroups";
+ public final static String ID = WorkbenchUiPlugin.PLUGIN_ID + ".deleteGroups";
/* DEPENDENCY INJECTION */
private UserAdminWrapper userAdminWrapper;
StringBuilder builder = new StringBuilder();
while (it.hasNext()) {
Group currGroup = it.next();
- String groupName = UserAdminUtils.getUsername(currGroup);
+ String groupName = UserAdminUtils.getUserLocalId(currGroup.getName());
// TODO add checks
builder.append(groupName).append("; ");
groups.add(currGroup);
}
- if (!MessageDialog.openQuestion(HandlerUtil.getActiveShell(event),
- "Delete Groups",
- "Are you sure that you " + "want to delete these groups?\n"
- + builder.substring(0, builder.length() - 2)))
+ if (!MessageDialog.openQuestion(HandlerUtil.getActiveShell(event), "Delete Groups", "Are you sure that you "
+ + "want to delete these groups?\n" + builder.substring(0, builder.length() - 2)))
return null;
userAdminWrapper.beginTransactionIfNeeded();
UserAdmin userAdmin = userAdminWrapper.getUserAdmin();
- IWorkbenchPage iwp = HandlerUtil.getActiveWorkbenchWindow(event)
- .getActivePage();
+ IWorkbenchPage iwp = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage();
for (Group group : groups) {
String groupName = group.getName();
// TODO find a way to close the editor cleanly if opened. Cannot be
// Update the view
for (Group group : groups) {
- userAdminWrapper.notifyListeners(new UserAdminEvent(null,
- UserAdminEvent.ROLE_REMOVED, group));
+ userAdminWrapper.notifyListeners(new UserAdminEvent(null, UserAdminEvent.ROLE_REMOVED, group));
}
return null;
import org.argeo.cms.ui.workbench.WorkbenchUiPlugin;
import org.argeo.cms.ui.workbench.internal.useradmin.UserAdminWrapper;
import org.argeo.cms.ui.workbench.internal.useradmin.parts.UserEditorInput;
-import org.argeo.cms.util.useradmin.UserAdminUtils;
+import org.argeo.cms.util.UserAdminUtils;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
while (it.hasNext()) {
User currUser = it.next();
- String userName = UserAdminUtils.getUsername(currUser);
+ String userName = UserAdminUtils.getUserLocalId(currUser.getName());
if (UserAdminUtils.isCurrentUser(currUser)) {
- MessageDialog.openError(HandlerUtil.getActiveShell(event),
- "Deletion forbidden",
+ MessageDialog.openError(HandlerUtil.getActiveShell(event), "Deletion forbidden",
"You cannot delete your own user this way.");
return null;
}
users.add(currUser);
}
- if (!MessageDialog.openQuestion(
- HandlerUtil.getActiveShell(event),
- "Delete Users",
- "Are you sure that you want to delete these users?\n"
- + builder.substring(0, builder.length() - 2)))
+ if (!MessageDialog.openQuestion(HandlerUtil.getActiveShell(event), "Delete Users",
+ "Are you sure that you want to delete these users?\n" + builder.substring(0, builder.length() - 2)))
return null;
userAdminWrapper.beginTransactionIfNeeded();
UserAdmin userAdmin = userAdminWrapper.getUserAdmin();
- IWorkbenchPage iwp = HandlerUtil.getActiveWorkbenchWindow(event)
- .getActivePage();
+ IWorkbenchPage iwp = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage();
for (User user : users) {
String userName = user.getName();
userAdminWrapper.commitOrNotifyTransactionStateChange();
for (User user : users) {
- userAdminWrapper.notifyListeners(new UserAdminEvent(null,
- UserAdminEvent.ROLE_REMOVED, user));
+ userAdminWrapper.notifyListeners(new UserAdminEvent(null, UserAdminEvent.ROLE_REMOVED, user));
}
return null;
}
import org.argeo.cms.CmsException;
import org.argeo.cms.ui.workbench.WorkbenchUiPlugin;
import org.argeo.cms.ui.workbench.internal.useradmin.UserAdminWrapper;
-import org.argeo.cms.util.useradmin.UserAdminUtils;
+import org.argeo.cms.util.UserAdminUtils;
import org.argeo.eclipse.ui.EclipseUiUtils;
import org.argeo.eclipse.ui.dialogs.ErrorFeedback;
import org.argeo.naming.LdapAttrs;
import org.argeo.cms.ui.workbench.internal.useradmin.providers.UserFilter;
import org.argeo.cms.ui.workbench.internal.useradmin.providers.UserNameLP;
import org.argeo.cms.ui.workbench.internal.useradmin.providers.UserTableDefaultDClickListener;
-import org.argeo.cms.util.useradmin.UserAdminUtils;
+import org.argeo.cms.util.UserAdminUtils;
import org.argeo.eclipse.ui.ColumnDefinition;
import org.argeo.eclipse.ui.EclipseUiUtils;
import org.argeo.eclipse.ui.parts.LdifUsersTable;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.argeo.cms.CmsException;
+import org.argeo.cms.auth.CurrentUser;
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.ui.workbench.internal.useradmin.providers.UserDragListener;
import org.argeo.cms.ui.workbench.internal.useradmin.providers.UserNameLP;
import org.argeo.cms.ui.workbench.internal.useradmin.providers.UserTableDefaultDClickListener;
-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;
public void createPartControl(Composite parent) {
parent.setLayout(EclipseUiUtils.noSpaceGridLayout());
- boolean isAdmin = UserAdminUtils.isUserInRole(NodeConstants.ROLE_ADMIN);
+ boolean isAdmin = CurrentUser.isInRole(NodeConstants.ROLE_ADMIN);
// Define the displayed columns
columnDefs.add(new ColumnDefinition(new RoleIconLP(), "", 26));
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.argeo.cms.CmsException;
+import org.argeo.cms.auth.CurrentUser;
import org.argeo.cms.ui.workbench.internal.useradmin.UserAdminWrapper;
import org.argeo.cms.ui.workbench.internal.useradmin.providers.CommonNameLP;
import org.argeo.cms.ui.workbench.internal.useradmin.providers.DomainNameLP;
import org.argeo.cms.ui.workbench.internal.useradmin.providers.MailLP;
import org.argeo.cms.ui.workbench.internal.useradmin.providers.UserNameLP;
-import org.argeo.cms.util.useradmin.UserAdminUtils;
+import org.argeo.cms.util.UserAdminUtils;
import org.argeo.eclipse.ui.ColumnDefinition;
import org.argeo.eclipse.ui.EclipseUiUtils;
import org.argeo.eclipse.ui.parts.LdifUsersTable;
200));
// Only show technical DN to admin
- if (UserAdminUtils.isUserInRole(NodeConstants.ROLE_ADMIN))
+ if (CurrentUser.isInRole(NodeConstants.ROLE_ADMIN))
columnDefs.add(new ColumnDefinition(new UserNameLP(),
"Distinguished Name", 300));
columnDefs.add(new ColumnDefinition(new DomainNameLP(), "Domain",
200));
// Only show technical DN to admin
- if (UserAdminUtils.isUserInRole(NodeConstants.ROLE_ADMIN))
+ if (CurrentUser.isInRole(NodeConstants.ROLE_ADMIN))
columnDefs.add(new ColumnDefinition(new UserNameLP(),
"Distinguished Name", 300));
userTableCmp = new ChosenUsersTableViewer(pageCmp, SWT.MULTI
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.cms.util.UserAdminUtils;
import org.argeo.naming.LdapAttrs;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.swt.events.ModifyEvent;
import java.util.List;
import org.argeo.cms.CmsException;
+import org.argeo.cms.auth.CurrentUser;
import org.argeo.cms.ui.workbench.internal.useradmin.SecurityAdminImages;
import org.argeo.cms.ui.workbench.internal.useradmin.UserAdminWrapper;
import org.argeo.cms.ui.workbench.internal.useradmin.parts.UserEditor.GroupChangeListener;
import org.argeo.cms.ui.workbench.internal.useradmin.providers.UserFilter;
import org.argeo.cms.ui.workbench.internal.useradmin.providers.UserNameLP;
import org.argeo.cms.ui.workbench.internal.useradmin.providers.UserTableDefaultDClickListener;
-import org.argeo.cms.util.useradmin.UserAdminUtils;
+import org.argeo.cms.util.UserAdminUtils;
import org.argeo.eclipse.ui.ColumnDefinition;
import org.argeo.eclipse.ui.EclipseUiUtils;
import org.argeo.eclipse.ui.parts.LdifUsersTable;
final Text firstName = createLT(tk, body, "First name",
UserAdminUtils.getProperty(user, LdapAttrs.givenName.name()));
- final Text lastName = createLT(tk, body, "Last name",
- UserAdminUtils.getProperty(user, LdapAttrs.sn.name()));
+ final Text lastName = createLT(tk, body, "Last name", UserAdminUtils.getProperty(user, LdapAttrs.sn.name()));
- final Text email = createLT(tk, body, "Email",
- UserAdminUtils.getProperty(user, LdapAttrs.mail.name()));
+ final Text email = createLT(tk, body, "Email", UserAdminUtils.getProperty(user, LdapAttrs.mail.name()));
// create form part (controller)
AbstractFormPart part = new SectionPart((Section) body.getParent()) {
@Override
public void initialize(IManagedForm form) {
super.initialize(form);
- listener = editor.new MainInfoListener(parent.getDisplay(),
- this);
+ listener = editor.new MainInfoListener(parent.getDisplay(), this);
userAdminWrapper.addListener(listener);
}
@SuppressWarnings("unchecked")
public void commit(boolean onSave) {
// TODO Sanity checks (mail validity...)
- user.getProperties().put(LdapAttrs.givenName.name(),
- firstName.getText());
- user.getProperties().put(LdapAttrs.sn.name(),
- lastName.getText());
- user.getProperties().put(LdapAttrs.cn.name(),
- commonName.getText());
- user.getProperties()
- .put(LdapAttrs.mail.name(), email.getText());
+ user.getProperties().put(LdapAttrs.givenName.name(), firstName.getText());
+ user.getProperties().put(LdapAttrs.sn.name(), lastName.getText());
+ user.getProperties().put(LdapAttrs.cn.name(), commonName.getText());
+ user.getProperties().put(LdapAttrs.mail.name(), email.getText());
super.commit(onSave);
}
@Override
public void refresh() {
- distinguishedName.setText(UserAdminUtils.getProperty(user,
- LdapAttrs.uid.name()));
- commonName.setText(UserAdminUtils.getProperty(user,
- LdapAttrs.cn.name()));
- firstName.setText(UserAdminUtils.getProperty(user,
- LdapAttrs.givenName.name()));
- lastName.setText(UserAdminUtils.getProperty(user,
- LdapAttrs.sn.name()));
- email.setText(UserAdminUtils.getProperty(user,
- LdapAttrs.mail.name()));
+ distinguishedName.setText(UserAdminUtils.getProperty(user, LdapAttrs.uid.name()));
+ commonName.setText(UserAdminUtils.getProperty(user, LdapAttrs.cn.name()));
+ firstName.setText(UserAdminUtils.getProperty(user, LdapAttrs.givenName.name()));
+ lastName.setText(UserAdminUtils.getProperty(user, LdapAttrs.sn.name()));
+ email.setText(UserAdminUtils.getProperty(user, LdapAttrs.mail.name()));
refreshFormTitle(user);
super.refresh();
}
AbstractFormPart part = new SectionPart((Section) body.getParent()) {
@SuppressWarnings("unchecked")
public void commit(boolean onSave) {
- if (!password1.getText().equals("")
- || !password2.getText().equals("")) {
+ if (!password1.getText().equals("") || !password2.getText().equals("")) {
if (password1.getText().equals(password2.getText())) {
char[] newPassword = password1.getText().toCharArray();
// userAdminWrapper.beginTransactionIfNeeded();
Composite body = (Composite) section.getClient();
body.setLayout(EclipseUiUtils.noSpaceGridLayout());
- boolean isAdmin = UserAdminUtils.isUserInRole(NodeConstants.ROLE_ADMIN);
+ boolean isAdmin = CurrentUser.isInRole(NodeConstants.ROLE_ADMIN);
// Displayed columns
List<ColumnDefinition> columnDefs = new ArrayList<ColumnDefinition>();
columnDefs.add(new ColumnDefinition(new RoleIconLP(), "", 0, 24));
- columnDefs.add(new ColumnDefinition(new CommonNameLP(), "Common Name",
- 150));
- columnDefs.add(new ColumnDefinition(new DomainNameLP(), "Domain Name",
- 200));
+ columnDefs.add(new ColumnDefinition(new CommonNameLP(), "Common Name", 150));
+ columnDefs.add(new ColumnDefinition(new DomainNameLP(), "Domain Name", 200));
// Only show technical DN to administrators
if (isAdmin)
- columnDefs.add(new ColumnDefinition(new UserNameLP(),
- "Distinguished Name", 120));
+ columnDefs.add(new ColumnDefinition(new UserNameLP(), "Distinguished Name", 120));
// Create and configure the table
- final LdifUsersTable userViewerCmp = new MyUserTableViewer(body,
- SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL, user);
+ final LdifUsersTable userViewerCmp = new MyUserTableViewer(body, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL, user);
userViewerCmp.setColumnDefinitions(columnDefs);
if (isAdmin)
userViewer.addDoubleClickListener(new UserTableDefaultDClickListener());
int operations = DND.DROP_COPY | DND.DROP_MOVE;
Transfer[] tt = new Transfer[] { TextTransfer.getInstance() };
- GroupDropListener dropL = new GroupDropListener(userAdminWrapper,
- userViewer, user);
+ GroupDropListener dropL = new GroupDropListener(userAdminWrapper, userViewer, user);
userViewer.addDropSupport(operations, tt, dropL);
SectionPart part = new SectionPart((Section) body.getParent()) {
@Override
public void initialize(IManagedForm form) {
super.initialize(form);
- listener = editor.new GroupChangeListener(parent.getDisplay(),
- this);
+ listener = editor.new GroupChangeListener(parent.getDisplay(), this);
userAdminWrapper.addListener(listener);
}
@Override
public void widgetSelected(SelectionEvent e) {
- userFilter.setShowSystemRole(showSystemRoleBtn
- .getSelection());
+ userFilter.setShowSystemRole(showSystemRoleBtn.getSelection());
refresh();
}
});
}
}
- private void addRemoveAbitily(SectionPart sectionPart,
- TableViewer userViewer, User user) {
+ private void addRemoveAbitily(SectionPart sectionPart, TableViewer userViewer, User user) {
Section section = sectionPart.getSection();
ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT);
ToolBar toolbar = toolBarManager.createControl(section);
- final Cursor handCursor = new Cursor(section.getDisplay(),
- SWT.CURSOR_HAND);
+ final Cursor handCursor = new Cursor(section.getDisplay(), SWT.CURSOR_HAND);
toolbar.setCursor(handCursor);
toolbar.addDisposeListener(new DisposeListener() {
private static final long serialVersionUID = 3882131405820522925L;
}
});
- String tooltip = "Remove " + UserAdminUtils.getUsername(user)
- + " from the below selected groups";
- Action action = new RemoveMembershipAction(userViewer, user, tooltip,
- SecurityAdminImages.ICON_REMOVE_DESC);
+ String tooltip = "Remove " + UserAdminUtils.getUserLocalId(user.getName()) + " from the below selected groups";
+ Action action = new RemoveMembershipAction(userViewer, user, tooltip, SecurityAdminImages.ICON_REMOVE_DESC);
toolBarManager.add(action);
toolBarManager.update(true);
section.setTextClient(toolbar);
private final TableViewer userViewer;
private final User user;
- RemoveMembershipAction(TableViewer userViewer, User user, String name,
- ImageDescriptor img) {
+ RemoveMembershipAction(TableViewer userViewer, User user, String name, ImageDescriptor img) {
super(name, img);
this.userViewer = userViewer;
this.user = user;
}
userAdminWrapper.commitOrNotifyTransactionStateChange();
for (Group group : groups) {
- userAdminWrapper.notifyListeners(new UserAdminEvent(null,
- UserAdminEvent.ROLE_CHANGED, group));
+ userAdminWrapper.notifyListeners(new UserAdminEvent(null, UserAdminEvent.ROLE_CHANGED, group));
}
}
}
private final UserAdminWrapper myUserAdminWrapper;
private final User myUser;
- public GroupDropListener(UserAdminWrapper userAdminWrapper,
- Viewer userViewer, User user) {
+ public GroupDropListener(UserAdminWrapper userAdminWrapper, Viewer userViewer, User user) {
super(userViewer);
this.myUserAdminWrapper = userAdminWrapper;
this.myUser = user;
}
@Override
- public boolean validateDrop(Object target, int operation,
- TransferData transferType) {
+ public boolean validateDrop(Object target, int operation, TransferData transferType) {
// Target is always OK in a list only view
// TODO check if not a string
boolean validDrop = true;
Group group = (Group) role;
group.addMember(myUser);
userAdminWrapper.commitOrNotifyTransactionStateChange();
- myUserAdminWrapper.notifyListeners(new UserAdminEvent(null,
- UserAdminEvent.ROLE_CHANGED, group));
+ myUserAdminWrapper.notifyListeners(new UserAdminEvent(null, UserAdminEvent.ROLE_CHANGED, group));
}
super.drop(event);
}
// LOCAL HELPERS
private void refreshFormTitle(User group) {
- getManagedForm().getForm().setText(
- UserAdminUtils.getProperty(group, LdapAttrs.cn.name()));
+ getManagedForm().getForm().setText(UserAdminUtils.getProperty(group, LdapAttrs.cn.name()));
}
/** Appends a section with a title */
}
/** Creates label and multiline text. */
- Text createLMT(FormToolkit toolkit, Composite body, String label,
- String value) {
+ Text createLMT(FormToolkit toolkit, Composite body, String label, String value) {
Label lbl = toolkit.createLabel(body, label);
lbl.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
Text text = toolkit.createText(body, value, SWT.BORDER | SWT.MULTI);
}
/** Creates label and password. */
- Text createLP(FormToolkit toolkit, Composite body, String label,
- String value) {
+ Text createLP(FormToolkit toolkit, Composite body, String label, String value) {
Label lbl = toolkit.createLabel(body, label);
lbl.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
Text text = toolkit.createText(body, value, SWT.BORDER | SWT.PASSWORD);
}
/** Creates label and text. */
- Text createLT(FormToolkit toolkit, Composite body, String label,
- String value) {
+ Text createLT(FormToolkit toolkit, Composite body, String label, String value) {
Label lbl = toolkit.createLabel(body, label);
lbl.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
Text text = toolkit.createText(body, value, SWT.BORDER);
import java.util.List;
import org.argeo.cms.CmsException;
+import org.argeo.cms.auth.CurrentUser;
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.ui.workbench.internal.useradmin.providers.UserDragListener;
import org.argeo.cms.ui.workbench.internal.useradmin.providers.UserNameLP;
import org.argeo.cms.ui.workbench.internal.useradmin.providers.UserTableDefaultDClickListener;
-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;
columnDefs.add(new ColumnDefinition(new MailLP(), "E-mail", 150));
columnDefs.add(new ColumnDefinition(new DomainNameLP(), "Domain", 200));
// Only show technical DN to admin
- if (UserAdminUtils.isUserInRole(NodeConstants.ROLE_ADMIN))
+ if (CurrentUser.isInRole(NodeConstants.ROLE_ADMIN))
columnDefs.add(new ColumnDefinition(new UserNameLP(),
"Distinguished Name", 300));
package org.argeo.cms.ui.workbench.internal.useradmin.providers;
-import org.argeo.cms.util.useradmin.UserAdminUtils;
+import org.argeo.cms.util.UserAdminUtils;
import org.argeo.naming.LdapAttrs;
import org.osgi.service.useradmin.User;
package org.argeo.cms.ui.workbench.internal.useradmin.providers;
-import org.argeo.cms.util.useradmin.UserAdminUtils;
+import org.argeo.cms.util.UserAdminUtils;
import org.osgi.service.useradmin.User;
/** The human friendly domain name for the corresponding user. */
package org.argeo.cms.ui.workbench.internal.useradmin.providers;
-import org.argeo.cms.util.useradmin.UserAdminUtils;
+import org.argeo.cms.util.UserAdminUtils;
import org.argeo.naming.LdapAttrs;
import org.osgi.service.useradmin.User;
import javax.naming.ldap.LdapName;
import org.argeo.cms.CmsException;
-import org.argeo.cms.util.useradmin.UserAdminUtils;
+import org.argeo.cms.util.UserAdminUtils;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.swt.SWT;
import static org.argeo.eclipse.ui.EclipseUiUtils.notEmpty;
-import org.argeo.cms.util.useradmin.UserAdminUtils;
+import org.argeo.cms.util.UserAdminUtils;
import org.argeo.naming.LdapAttrs;
import org.argeo.node.NodeConstants;
import org.eclipse.jface.viewers.Viewer;
--- /dev/null
+package org.argeo.cms.util;
+
+import java.util.List;
+
+import javax.naming.InvalidNameException;
+import javax.naming.ldap.LdapName;
+import javax.naming.ldap.Rdn;
+
+import org.argeo.cms.CmsException;
+import org.argeo.cms.auth.CurrentUser;
+import org.argeo.eclipse.ui.EclipseUiUtils;
+import org.argeo.naming.LdapAttrs;
+import org.argeo.node.NodeConstants;
+import org.osgi.service.useradmin.Role;
+import org.osgi.service.useradmin.User;
+import org.osgi.service.useradmin.UserAdmin;
+
+/** Centralise common patterns to manage users with a {@link UserAdmin} */
+public class UserAdminUtils {
+
+ // CURRENTUSER HELPERS
+ /** Checks if current user is the same as the passed one */
+ public static boolean isCurrentUser(User user) {
+ String userUsername = getProperty(user, LdapAttrs.DN);
+ LdapName userLdapName = getLdapName(userUsername);
+ LdapName selfUserName = getCurrentUserLdapName();
+ return userLdapName.equals(selfUserName);
+ }
+
+ /** Retrieves the current logged-in {@link User} */
+ public static User getCurrentUser(UserAdmin userAdmin) {
+ return (User) userAdmin.getRole(CurrentUser.getUsername());
+ }
+
+ /** Retrieves the current logged-in user {@link LdapName} */
+ public final static LdapName getCurrentUserLdapName() {
+ String name = CurrentUser.getUsername();
+ return getLdapName(name);
+ }
+
+ /** Retrieves the current logged-in user display name. */
+ public static String getCurrentUserMail(UserAdmin userAdmin) {
+ String username = CurrentUser.getUsername();
+ return getUserMail(userAdmin, username);
+ }
+
+ // OTHER USERS HELPERS
+ /**
+ * Retrieves the local id of a user or group, that is respectively the uid
+ * or cn of the passed dn with no {@link UserAdmin}
+ */
+ public static String getUserLocalId(String dn) {
+ LdapName ldapName = getLdapName(dn);
+ Rdn last = ldapName.getRdn(ldapName.size() - 1);
+ 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 local id, non valid dn: " + dn);
+ }
+
+ /**
+ * Returns the local username if no user with this dn is found or if the
+ * found user has no defined display name
+ */
+ public static String getUserDisplayName(UserAdmin userAdmin, String dn) {
+ Role user = userAdmin.getRole(dn);
+ String dName;
+ if (user == null)
+ dName = getUserLocalId(dn);
+ else {
+ dName = getProperty(user, LdapAttrs.displayName.name());
+ if (EclipseUiUtils.isEmpty(dName))
+ dName = getProperty(user, LdapAttrs.cn.name());
+ if (EclipseUiUtils.isEmpty(dName))
+ dName = getUserLocalId(dn);
+ }
+ return dName;
+ }
+
+ /**
+ * Returns null if no user with this dn is found or if the found user has no
+ * defined mail
+ */
+ public static String getUserMail(UserAdmin userAdmin, String dn) {
+ Role user = userAdmin.getRole(dn);
+ if (user == null)
+ return null;
+ else
+ return getProperty(user, LdapAttrs.mail.name());
+ }
+
+ // LDAP NAMES HELPERS
+ /**
+ * Easily retrieves one of the {@link Role}'s property or an empty String if
+ * the requested property is not defined
+ */
+ public final static String getProperty(Role role, String key) {
+ Object obj = role.getProperties().get(key);
+ if (obj != null)
+ return (String) obj;
+ else
+ return "";
+ }
+
+ /**
+ * Simply retrieves a LDAP name from a {@link LdapAttrs.DN} with no
+ * exception
+ */
+ private static LdapName getLdapName(String dn) {
+ try {
+ return new LdapName(dn);
+ } catch (InvalidNameException e) {
+ throw new CmsException("Cannot parse LDAP name " + dn, e);
+ }
+ }
+
+ /** Simply retrieves a display name of the relevant domain */
+ public final static String getDomainName(User user) {
+ String dn = user.getName();
+ if (dn.endsWith(NodeConstants.ROLES_BASEDN))
+ return "System roles";
+ try {
+ LdapName name = new LdapName(dn);
+ List<Rdn> rdns = name.getRdns();
+ String dname = null;
+ int i = 0;
+ loop: while (i < rdns.size()) {
+ Rdn currrRdn = rdns.get(i);
+ if (!LdapAttrs.dc.name().equals(currrRdn.getType()))
+ break loop;
+ else {
+ String currVal = (String) currrRdn.getValue();
+ dname = dname == null ? currVal : currVal + "." + dname;
+ }
+ i++;
+ }
+ return dname;
+ } catch (InvalidNameException e) {
+ throw new CmsException("Unable to get domain name for " + dn, e);
+ }
+ }
+
+ // VARIOUS HELPERS
+ public final static String buildDefaultCn(String firstName, String lastName) {
+ return (firstName.trim() + " " + lastName.trim() + " ").trim();
+ }
+}
+++ /dev/null
-package org.argeo.cms.util.useradmin;
-
-import java.util.List;
-import java.util.Set;
-
-import javax.naming.InvalidNameException;
-import javax.naming.ldap.LdapName;
-import javax.naming.ldap.Rdn;
-
-import org.argeo.cms.CmsException;
-import org.argeo.cms.auth.CurrentUser;
-import org.argeo.eclipse.ui.EclipseUiUtils;
-import org.argeo.naming.LdapAttrs;
-import org.argeo.node.NodeConstants;
-import org.osgi.service.useradmin.Role;
-import org.osgi.service.useradmin.User;
-import org.osgi.service.useradmin.UserAdmin;
-
-/** Centralise common patterns to manage users with a {@link UserAdmin} */
-public class UserAdminUtils {
-
- /** Checks if current user is registered */
- public static boolean isRegistered() {
- return !CurrentUser.isAnonymous();
- }
-
- /** Returns true if the current user is in the specified role */
- public static boolean isUserInRole(String role) {
- Set<String> roles = CurrentUser.roles();
- return roles.contains(role);
- }
-
- // CURRENTUSER HELPERS
- /** Checks if current user is the same as the passed one */
- public static boolean isCurrentUser(User user) {
- String userUsername = getProperty(user, LdapAttrs.DN);
- LdapName userLdapName = getLdapName(userUsername);
- LdapName selfUserName = getCurrentUserLdapName();
- return userLdapName.equals(selfUserName);
- }
-
- /** Retrieves the current logged-in {@link User} */
- public static User getCurrentUser(UserAdmin userAdmin) {
- return (User) userAdmin.getRole(CurrentUser.getUsername());
- }
-
- /** Retrieves the current logged-in user {@link LdapName} */
- public final static LdapName getCurrentUserLdapName() {
- String name = CurrentUser.getUsername();
- return getLdapName(name);
- }
-
- /** Retrieves the current logged-in user display name. */
- public static String getCurrentUserMail(UserAdmin userAdmin) {
- String username = CurrentUser.getUsername();
- return getUserMail(userAdmin, username);
- }
-
- // OTHER USERS HELPERS
- /**
- * Retrieves the local id of a user or group, that is respectively the uid
- * or cn of the passed dn with no {@link UserAdmin}
- */
- public static String getUserLocalId(String dn) {
- LdapName ldapName = getLdapName(dn);
- Rdn last = ldapName.getRdn(ldapName.size() - 1);
- 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 local id, non valid dn: " + dn);
- }
-
- /**
- * Returns the local username if no user with this dn is found or if the
- * found user has no defined display name
- */
- public static String getUserDisplayName(UserAdmin userAdmin, String dn) {
- Role user = userAdmin.getRole(dn);
- String dName;
- if (user == null)
- dName = getUserLocalId(dn);
- else {
- dName = getProperty(user, LdapAttrs.displayName.name());
- if (EclipseUiUtils.isEmpty(dName))
- dName = getProperty(user, LdapAttrs.cn.name());
- if (EclipseUiUtils.isEmpty(dName))
- dName = getUserLocalId(dn);
- }
- return dName;
- }
-
- /**
- * Returns null if no user with this dn is found or if the found user has no
- * defined mail
- */
- public static String getUserMail(UserAdmin userAdmin, String dn) {
- Role user = userAdmin.getRole(dn);
- if (user == null)
- return null;
- else
- return getProperty(user, LdapAttrs.mail.name());
- }
-
- // LDAP NAMES HELPERS
- /**
- * Easily retrieves one of the {@link Role}'s property or an empty String if
- * the requested property is not defined
- */
- public final static String getProperty(Role role, String key) {
- Object obj = role.getProperties().get(key);
- if (obj != null)
- return (String) obj;
- else
- return "";
- }
-
- /**
- * Simply retrieves a LDAP name from a {@link LdapAttrs.DN} with no
- * exception
- */
- private static LdapName getLdapName(String dn) {
- try {
- return new LdapName(dn);
- } catch (InvalidNameException e) {
- throw new CmsException("Cannot parse LDAP name " + dn, e);
- }
- }
-
- /** Simply retrieves a display name of the relevant domain */
- public final static String getDomainName(User user) {
- String dn = user.getName();
- if (dn.endsWith(NodeConstants.ROLES_BASEDN))
- return "System roles";
- try {
- LdapName name = new LdapName(dn);
- List<Rdn> rdns = name.getRdns();
- String dname = null;
- int i = 0;
- loop: while (i < rdns.size()) {
- Rdn currrRdn = rdns.get(i);
- if (!LdapAttrs.dc.name().equals(currrRdn.getType()))
- break loop;
- else {
- String currVal = (String) currrRdn.getValue();
- dname = dname == null ? currVal : currVal + "." + dname;
- }
- i++;
- }
- return dname;
- } catch (InvalidNameException e) {
- throw new CmsException("Unable to get domain name for " + dn, e);
- }
- }
-
- // VARIOUS HELPERS
- public final static String buildDefaultCn(String firstName, String lastName) {
- return (firstName.trim() + " " + lastName.trim() + " ").trim();
- }
-}
/** Static utilities */
public final class CurrentUser {
+
/**
* @return the authenticated username or null if not authenticated /
* anonymous
return isAnonymous(currentSubject());
}
+ public static boolean isRegistered() {
+ return !isAnonymous();
+ }
+
public static boolean isAnonymous(Subject subject) {
if (subject == null)
return true;
String username = getUsername(subject);
- return username == null || username.equalsIgnoreCase(NodeConstants.ROLE_ANONYMOUS);
- }
-
- private static Subject currentSubject() {
- NodeAuthenticated cmsView = getNodeAuthenticated();
- if (cmsView != null)
- return cmsView.getLoginContext().getSubject();
- Subject subject = Subject.getSubject(AccessController.getContext());
- if (subject != null)
- return subject;
- throw new CmsException("Cannot find related subject");
+ return username == null
+ || username.equalsIgnoreCase(NodeConstants.ROLE_ANONYMOUS);
}
/**
throw new CmsException("Subject cannot be null");
if (subject.getPrincipals(X500Principal.class).size() != 1)
return NodeConstants.ROLE_ANONYMOUS;
- Principal principal = subject.getPrincipals(X500Principal.class).iterator().next();
+ Principal principal = subject.getPrincipals(X500Principal.class)
+ .iterator().next();
return principal.getName();
}
}
private static Authorization getAuthorization(Subject subject) {
- return subject.getPrivateCredentials(Authorization.class).iterator().next();
+ return subject.getPrivateCredentials(Authorization.class).iterator()
+ .next();
}
public final static Set<String> roles() {
return roles(currentSubject());
}
+ private static Subject currentSubject() {
+ NodeAuthenticated cmsView = getNodeAuthenticated();
+ if (cmsView != null)
+ return cmsView.getLoginContext().getSubject();
+ Subject subject = Subject.getSubject(AccessController.getContext());
+ if (subject != null)
+ return subject;
+ throw new CmsException("Cannot find related subject");
+ }
+
+ /** Returns true if the current user is in the specified role */
+ public static boolean isInRole(String role) {
+ Set<String> roles = roles();
+ return roles.contains(role);
+ }
+
public final static Set<String> roles(Subject subject) {
Set<String> roles = new HashSet<String>();
roles.add(getUsername(subject));