X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.security.ui.admin%2Fsrc%2Forg%2Fargeo%2Fsecurity%2Fui%2Fadmin%2Finternal%2Fparts%2FUserMainPage.java;h=9ea1dcffcb9ed2496f1a1d4248564f84b7a22167;hb=f0be5ec381492eff23d4576ee4122734af4ad877;hp=ab8ea321664a384e70bc1d60b32589cebd792b71;hpb=a1d862e4ef6221ebc91fcccea688d66504020365;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/parts/UserMainPage.java b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/parts/UserMainPage.java index ab8ea3216..9ea1dcffc 100644 --- a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/parts/UserMainPage.java +++ b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/parts/UserMainPage.java @@ -20,6 +20,7 @@ import java.util.Iterator; import java.util.List; import org.argeo.ArgeoException; +import org.argeo.cms.auth.AuthConstants; import org.argeo.eclipse.ui.ColumnDefinition; import org.argeo.eclipse.ui.EclipseUiUtils; import org.argeo.eclipse.ui.parts.LdifUsersTable; @@ -27,13 +28,13 @@ import org.argeo.jcr.ArgeoNames; import org.argeo.osgi.useradmin.LdifName; import org.argeo.security.ui.admin.SecurityAdminImages; import org.argeo.security.ui.admin.internal.UiAdminUtils; -import org.argeo.security.ui.admin.internal.UserAdminConstants; import org.argeo.security.ui.admin.internal.UserAdminWrapper; import org.argeo.security.ui.admin.internal.parts.UserEditor.GroupChangeListener; import org.argeo.security.ui.admin.internal.parts.UserEditor.MainInfoListener; import org.argeo.security.ui.admin.internal.providers.CommonNameLP; import org.argeo.security.ui.admin.internal.providers.DomainNameLP; import org.argeo.security.ui.admin.internal.providers.RoleIconLP; +import org.argeo.security.ui.admin.internal.providers.UserFilter; import org.argeo.security.ui.admin.internal.providers.UserNameLP; import org.argeo.security.ui.admin.internal.providers.UserTableDefaultDClickListener; import org.eclipse.jface.action.Action; @@ -54,9 +55,12 @@ import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Cursor; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; @@ -95,6 +99,7 @@ public class UserMainPage extends FormPage implements ArgeoNames { ScrolledForm form = mf.getForm(); Composite body = form.getBody(); GridLayout mainLayout = new GridLayout(); + // mainLayout.marginRight = 10; body.setLayout(mainLayout); User user = editor.getDisplayedUser(); appendOverviewPart(body, user); @@ -122,11 +127,10 @@ public class UserMainPage extends FormPage implements ArgeoNames { commonName.setEnabled(false); final Text firstName = createLT(tk, body, "First name", - UiAdminUtils - .getProperty(user, UserAdminConstants.KEY_FIRSTNAME)); + UiAdminUtils.getProperty(user, LdifName.givenname.name())); final Text lastName = createLT(tk, body, "Last name", - UiAdminUtils.getProperty(user, UserAdminConstants.KEY_LASTNAME)); + UiAdminUtils.getProperty(user, LdifName.sn.name())); final Text email = createLT(tk, body, "Email", UiAdminUtils.getProperty(user, LdifName.mail.name())); @@ -151,16 +155,13 @@ public class UserMainPage extends FormPage implements ArgeoNames { @SuppressWarnings("unchecked") public void commit(boolean onSave) { // TODO Sanity checks (mail validity...) - user.getProperties().put(UserAdminConstants.KEY_FIRSTNAME, + user.getProperties().put(LdifName.givenname.name(), firstName.getText()); - user.getProperties().put(UserAdminConstants.KEY_LASTNAME, - lastName.getText()); + user.getProperties() + .put(LdifName.sn.name(), lastName.getText()); user.getProperties().put(LdifName.cn.name(), commonName.getText()); user.getProperties().put(LdifName.mail.name(), email.getText()); - // Enable common name ? - // editor.setProperty(UserAdminConstants.KEY_CN, - // email.getText()); super.commit(onSave); } @@ -171,9 +172,9 @@ public class UserMainPage extends FormPage implements ArgeoNames { commonName.setText(UiAdminUtils.getProperty(user, LdifName.cn.name())); firstName.setText(UiAdminUtils.getProperty(user, - UserAdminConstants.KEY_FIRSTNAME)); + LdifName.givenname.name())); lastName.setText(UiAdminUtils.getProperty(user, - UserAdminConstants.KEY_LASTNAME)); + LdifName.sn.name())); email.setText(LdifName.mail.name()); refreshFormTitle(user); super.refresh(); @@ -250,22 +251,29 @@ public class UserMainPage extends FormPage implements ArgeoNames { Composite body = (Composite) section.getClient(); body.setLayout(EclipseUiUtils.noSpaceGridLayout()); + boolean isAdmin = UiAdminUtils.isUserInRole(AuthConstants.ROLE_ADMIN); + // Displayed columns List columnDefs = new ArrayList(); 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", - 120)); - columnDefs.add(new ColumnDefinition(new UserNameLP(), - "Distinguished Name", 300)); + 200)); + // Only show technical DN to administrators + if (isAdmin) + 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); userViewerCmp.setColumnDefinitions(columnDefs); - userViewerCmp.populate(true, false); + if (isAdmin) + userViewerCmp.populateWithStaticFilters(false, false); + else + userViewerCmp.populate(true, false); GridData gd = EclipseUiUtils.fillAll(); gd.heightHint = 300; userViewerCmp.setLayoutData(gd); @@ -312,21 +320,47 @@ public class UserMainPage extends FormPage implements ArgeoNames { } private class MyUserTableViewer extends LdifUsersTable { - private static final long serialVersionUID = 8467999509931900367L; + private static final long serialVersionUID = 2653790051461237329L; + + private Button showSystemRoleBtn; private final User user; + private final UserFilter userFilter; public MyUserTableViewer(Composite parent, int style, User user) { super(parent, style, true); this.user = user; + userFilter = new UserFilter(); + userFilter.setShowSystemRole(false); + } + + protected void populateStaticFilters(Composite staticFilterCmp) { + staticFilterCmp.setLayout(new GridLayout()); + showSystemRoleBtn = new Button(staticFilterCmp, SWT.CHECK); + showSystemRoleBtn.setText("Show system roles"); + showSystemRoleBtn.addSelectionListener(new SelectionAdapter() { + private static final long serialVersionUID = -7033424592697691676L; + + @Override + public void widgetSelected(SelectionEvent e) { + userFilter.setShowSystemRole(showSystemRoleBtn + .getSelection()); + refresh(); + } + }); } @Override protected List listFilteredElements(String filter) { List users = (List) editor.getFlatGroups(null); + List filteredUsers = new ArrayList(); if (users.contains(user)) users.remove(user); - return users; + userFilter.setSearchText(filter); + for (User user : users) + if (userFilter.select(null, null, user)) + filteredUsers.add(user); + return filteredUsers; } }