Yair Zaslavsky has uploaded a new change for review. Change subject: core: Fix group population ......................................................................
core: Fix group population The following patch fixes group population for users and groups - a. It does not use DbFacade to get the external id - external id should be retrieved from the directory b. It runs the group population in all cases user information is populated c. At group population - the recrusion is fixed/changed - the LdapGroup object that is created is at ProceedGroupSearchResult , before making the recursive calls at populateGroup. Change-Id: I599fca005b27f6873cda3e5a46081de3357089b2 Signed-off-by: Yair Zaslavsky <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapAuthenticateUserCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapBrokerCommandBase.java 2 files changed, 24 insertions(+), 29 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/07/25407/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapAuthenticateUserCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapAuthenticateUserCommand.java index d86bcfe..5eb3e17 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapAuthenticateUserCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapAuthenticateUserCommand.java @@ -1,6 +1,5 @@ package org.ovirt.engine.core.bll.adbroker; -import java.util.List; import org.ovirt.engine.core.common.businessentities.LdapUser; import org.ovirt.engine.core.common.errors.VdcBllMessages; @@ -54,18 +53,8 @@ } else { user = populateUserData((LdapUser) searchResult, getAuthenticationDomain()); if (user != null) { + user.setUserName(getLoginName()); - GroupsDNQueryGenerator generator = createGroupsGeneratorForUser(user); - if (generator.getHasValues()) { - List<LdapQueryData> partialQueries = generator.getLdapQueriesData(); - for (LdapQueryData currQueryData : partialQueries) { - populateGroup(currQueryData, - getAuthenticationDomain(), - user.getGroups(), - getLoginName(), - getPassword()); - } - } authResult = new UserAuthenticationResult(user); setSucceeded(true); } else { diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapBrokerCommandBase.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapBrokerCommandBase.java index 55d4e5e..71b6f82 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapBrokerCommandBase.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LdapBrokerCommandBase.java @@ -7,14 +7,11 @@ import org.apache.commons.lang.StringUtils; import org.ovirt.engine.core.bll.session.SessionDataContainer; -import org.ovirt.engine.core.common.businessentities.DbGroup; import org.ovirt.engine.core.common.businessentities.DbUser; import org.ovirt.engine.core.common.businessentities.LdapGroup; import org.ovirt.engine.core.common.businessentities.LdapUser; import org.ovirt.engine.core.common.errors.VdcBllMessages; import org.ovirt.engine.core.common.utils.ExternalId; -import org.ovirt.engine.core.compat.Guid; -import org.ovirt.engine.core.dal.dbbroker.DbFacade; import org.ovirt.engine.core.utils.log.Log; import org.ovirt.engine.core.utils.log.LogFactory; @@ -106,11 +103,25 @@ java.util.HashMap<String, LdapGroup> groupsDict = new java.util.HashMap<String, LdapGroup>(); GroupsDNQueryGenerator generator = new GroupsDNQueryGenerator(); - proceedGroupsSearchResult(user.getMemberof(), groupsDict, generator); + proceedGroupsSearchResult(null, user.getMemberof(), groupsDict, generator); user.setGroups(groupsDict); if (user.getUserName() != null && !user.getUserName().contains("@")) { user.setUserName(user.getUserName() + "@" + user.getDomainControler()); } + + if (user != null) { + if (generator.getHasValues()) { + List<LdapQueryData> partialQueries = generator.getLdapQueriesData(); + for (LdapQueryData currQueryData : partialQueries) { + populateGroup(currQueryData, + getAuthenticationDomain(), + groupsDict, + getLoginName(), + getPassword()); + } + } + } + user.setGroups(groupsDict); return user; } @@ -143,10 +154,16 @@ private void ProceedGroupsSearchResult(GroupSearchResult groupsResult, java.util.Map<String, LdapGroup> groupsDict, GroupsDNQueryGenerator generator) { List<String> groupsList = groupsResult.getMemberOf(); - proceedGroupsSearchResult(groupsList, groupsDict, generator); + LdapGroup group = new LdapGroup(); + group.setid(groupsResult.getId()); + group.setname(LdapBrokerUtils.generateGroupDisplayValue(groupsResult.getDistinguishedName())); + group.setMemberOf(groupsResult.getMemberOf()); + group.setDistinguishedName(groupsResult.getDistinguishedName()); + groupsDict.put(group.getname(), group); + proceedGroupsSearchResult(groupsResult.getId(), groupsList, groupsDict, generator); } - private void proceedGroupsSearchResult(List<String> groupDNList, + private void proceedGroupsSearchResult(ExternalId groupId, List<String> groupDNList, Map<String, LdapGroup> groupsDict, GroupsDNQueryGenerator generator) { if (groupDNList == null) { return; @@ -154,17 +171,6 @@ for (String groupDN : groupDNList) { String groupName = LdapBrokerUtils.generateGroupDisplayValue(groupDN); if (!groupsDict.containsKey(groupName)) { - DbGroup dbGroup = DbFacade.getInstance().getDbGroupDao().getByName(groupName); - LdapGroup ldapGroup = null; - if (dbGroup != null) { - ldapGroup = new LdapGroup(dbGroup); - } else { - ldapGroup = new LdapGroup(); - ldapGroup.setid(new ExternalId(Guid.Empty.toByteArray())); - ldapGroup.setname(groupName); - } - ldapGroup.setDistinguishedName(groupDN); - groupsDict.put(groupName, ldapGroup); generator.add(groupDN); } } -- To view, visit http://gerrit.ovirt.org/25407 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I599fca005b27f6873cda3e5a46081de3357089b2 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Yair Zaslavsky <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
