From 3a3eb17b114cb514ebffc55c04a42198688e6df2 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Sun, 26 Jun 2022 20:51:10 +0200 Subject: [PATCH] Support IPA --- .../argeo/app/ui/people/PeopleEntryArea.java | 35 ++++++++++++++----- .../argeo/app/ui/people/PersonUiProvider.java | 5 ++- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/org.argeo.app.ui/src/org/argeo/app/ui/people/PeopleEntryArea.java b/org.argeo.app.ui/src/org/argeo/app/ui/people/PeopleEntryArea.java index 9ab179c..a0decc0 100644 --- a/org.argeo.app.ui/src/org/argeo/app/ui/people/PeopleEntryArea.java +++ b/org.argeo.app.ui/src/org/argeo/app/ui/people/PeopleEntryArea.java @@ -34,6 +34,7 @@ import org.argeo.cms.ux.widgets.DefaultTabularPart; import org.argeo.cms.ux.widgets.HierarchicalPart; import org.argeo.osgi.useradmin.UserDirectory; import org.argeo.util.directory.HierarchyUnit; +import org.argeo.util.directory.ldap.IpaUtils; import org.argeo.util.naming.LdapAttrs; import org.argeo.util.naming.LdapObjs; import org.eclipse.jface.window.Window; @@ -84,13 +85,18 @@ public class PeopleEntryArea implements SwtUiProvider, CmsUiProvider { List visible = new ArrayList<>(); if (parent != null) { for (HierarchyUnit hu : parent.getDirectHierarchyUnits(true)) { - if (CurrentUser.implies(CmsRole.userAdmin, hu.getContext())) { + if (CurrentUser.implies(CmsRole.userAdmin, hu.getContext()) // + ) // IPA + { visible.add(hu); } } } else { for (UserDirectory directory : cmsUserManager.getUserDirectories()) { - if (CurrentUser.implies(CmsRole.userAdmin, directory.getContext())) { + if (CurrentUser.implies(CmsRole.userAdmin, directory.getContext()) // + || CurrentUser.implies(CmsRole.userAdmin, + IpaUtils.IPA_ACCOUNTS_RDN + "," + directory.getContext())) // IPA + { visible.add(directory); } @@ -114,13 +120,24 @@ public class PeopleEntryArea implements SwtUiProvider, CmsUiProvider { protected List asList(HierarchyUnit hu) { List roles = new ArrayList<>(); UserDirectory ud = (UserDirectory) hu.getDirectory(); - for (HierarchyUnit directChild : hu.getDirectHierarchyUnits(false)) { - if (!directChild.isFunctional()) { - for (Role r : ud.getHierarchyUnitRoles(directChild, null, false)) { - Content content = ContentUtils.roleToContent(cmsUserManager, contentSession, r); - // if (r instanceof Person || r instanceof Organization) - if (content.hasContentClass(LdapObjs.inetOrgPerson.qName(), LdapObjs.organization.qName())) - roles.add(content); + if (ud.getRealm().isPresent()) { + for (Role r : ud.getHierarchyUnitRoles(ud, null, true)) { + Content content = ContentUtils.roleToContent(cmsUserManager, contentSession, r); + // if (r instanceof Person || r instanceof Organization) + if (content.hasContentClass(LdapObjs.inetOrgPerson.qName(), LdapObjs.organization.qName())) + roles.add(content); + } + + } else { + for (HierarchyUnit directChild : hu.getDirectHierarchyUnits(false)) { + if (!directChild.isFunctional()) { + for (Role r : ud.getHierarchyUnitRoles(directChild, null, false)) { + Content content = ContentUtils.roleToContent(cmsUserManager, contentSession, r); + // if (r instanceof Person || r instanceof Organization) + if (content.hasContentClass(LdapObjs.inetOrgPerson.qName(), + LdapObjs.organization.qName())) + roles.add(content); + } } } } diff --git a/org.argeo.app.ui/src/org/argeo/app/ui/people/PersonUiProvider.java b/org.argeo.app.ui/src/org/argeo/app/ui/people/PersonUiProvider.java index 17dc29b..6fa991d 100644 --- a/org.argeo.app.ui/src/org/argeo/app/ui/people/PersonUiProvider.java +++ b/org.argeo.app.ui/src/org/argeo/app/ui/people/PersonUiProvider.java @@ -116,7 +116,10 @@ public class PersonUiProvider implements CmsUiProvider { EditableText text = new EditableText(parent, SWT.SINGLE | SWT.FLAT); text.setLayoutData(CmsSwtUtils.fillWidth()); text.setStyle(SuiteStyle.simpleInput); - text.setText(context.attr(attr.qName())); + String txt = context.attr(attr.qName()); + if (txt == null) // FIXME understand why email is not found in IPA + txt = ""; + text.setText(txt); text.setMouseListener(new MouseAdapter() { @Override -- 2.30.2