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

Reply via email to