Yair Zaslavsky has uploaded a new change for review. Change subject: aaa: reactivate user ......................................................................
aaa: reactivate user Reactive users in the following flow: 1. Login 2. AddUser reactivate will occur with syncing the directory groups Change-Id: I556d8da48a858ce193865e84fb6c7cb4043a8e5b Topic: AAA Signed-off-by: Yair Zaslavsky <yzasl...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/aaa/DirectoryUtils.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddUserCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/LoginBaseCommand.java 3 files changed, 26 insertions(+), 22 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/74/29974/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/aaa/DirectoryUtils.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/aaa/DirectoryUtils.java index 46634fe..5952c24 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/aaa/DirectoryUtils.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/aaa/DirectoryUtils.java @@ -8,17 +8,21 @@ import org.ovirt.engine.api.extensions.ExtKey; import org.ovirt.engine.api.extensions.ExtMap; +import org.ovirt.engine.api.extensions.aaa.Authz; import org.ovirt.engine.api.extensions.aaa.Authz.GroupRecord; import org.ovirt.engine.api.extensions.aaa.Authz.PrincipalRecord; -import org.ovirt.engine.api.extensions.aaa.Authz; import org.ovirt.engine.core.common.businessentities.DbGroup; import org.ovirt.engine.core.common.businessentities.DbUser; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dal.dbbroker.DbFacade; import org.ovirt.engine.core.dao.DbGroupDAO; import org.ovirt.engine.core.extensions.mgr.ExtensionProxy; +import org.ovirt.engine.core.utils.log.Log; +import org.ovirt.engine.core.utils.log.LogFactory; public class DirectoryUtils { + + protected static final Log log = LogFactory.getLog(DirectoryUser.class); public static HashSet<Guid> getGroupIdsFromPrincipal(String authz, ExtMap principal) { HashSet<Guid> results = new HashSet<Guid>(); @@ -174,6 +178,21 @@ return directoryGroup; } + public static void syncAndReactivatePrincipal(ExtMap principal, DbUser dbUser, String reactivateReason) { + DirectoryUtils.flatGroups(principal); + HashSet<Guid> groupIds = DirectoryUtils.getGroupIdsFromPrincipal(dbUser.getDomain(), principal); + dbUser.setGroupIds(groupIds); + if (!dbUser.isActive()) { + log.info(String.format("User %1$s from authz provider %2$s was inactive. it Will be reactivated. The reactivation reason is: %3$s", + dbUser.getLoginName(), + dbUser.getDomain(), + reactivateReason)); + dbUser.setActive(true); + } + DbFacade.getInstance().getDbUserDao().saveOrUpdate(dbUser); + + } + public static DbGroup mapGroupRecordToDbGroup(String directory, ExtMap groupRecord) { return new DbGroup(mapGroupRecordToDirectoryGroup(directory, groupRecord)); } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddUserCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddUserCommand.java index 182d5d2..aaa235b 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddUserCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddUserCommand.java @@ -2,7 +2,6 @@ import java.util.Arrays; import java.util.Collections; -import java.util.HashSet; import java.util.List; import org.ovirt.engine.api.extensions.ExtMap; @@ -108,25 +107,13 @@ DbUserDAO dao = getDbUserDAO(); // First check if the user is already in the database, if it is we need to update, if not we need to insert: - DirectoryUtils.flatGroups(principal); - HashSet<Guid> groupIds = DirectoryUtils.getGroupIdsFromPrincipal(getParameters().getDirectory(), principal); DbUser dbUser = dao.getByExternalId(getParameters().getDirectory(), principal.<String> get(PrincipalRecord.ID)); - if (dbUser == null) { - dbUser = DirectoryUtils.mapPrincipalRecordToDbUser(getParameters().getDirectory(), principal); - dbUser.setId(Guid.newGuid()); - dbUser.setGroupIds(groupIds); - dao.save(dbUser); - } - else { - Guid id = dbUser.getId(); - dbUser = DirectoryUtils.mapPrincipalRecordToDbUser(getParameters().getDirectory(), principal); - dbUser.setId(id); - dbUser.setGroupIds(groupIds); - dao.update(dbUser); - } + DbUser mappedDbUser = DirectoryUtils.mapPrincipalRecordToDbUser(getParameters().getDirectory(), principal); + mappedDbUser.setId(dbUser != null ? dbUser.getId() : Guid.newGuid()); + mappedDbUser.setActive(dbUser != null ? dbUser.isActive() : true); - // Return the identifier of the created user: - setActionReturnValue(dbUser.getId()); + DirectoryUtils.syncAndReactivatePrincipal(principal, mappedDbUser, "the user is rectivated as it was added again to the system"); + setActionReturnValue(mappedDbUser.getId()); setSucceeded(true); } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/LoginBaseCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/LoginBaseCommand.java index 3d145f2..4a00942 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/LoginBaseCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/LoginBaseCommand.java @@ -264,10 +264,8 @@ dbUser = DirectoryUtils.mapPrincipalRecordToDbUser(AuthzUtils.getName(profile.getAuthz()), principalRecord); dbUser.setId(Guid.newGuid()); } - DirectoryUtils.flatGroups(principalRecord); - dbUser.setGroupIds(DirectoryUtils.getGroupIdsFromPrincipal(AuthzUtils.getName(profile.getAuthz()), principalRecord)); - getDbUserDAO().saveOrUpdate(dbUser); + DirectoryUtils.syncAndReactivatePrincipal(principalRecord, dbUser, "the user is re-activated as it is used for login"); // Check login permissions. We do it here and not via the // getPermissionCheckSubjects mechanism, because we need the user to be logged in to // the system in order to perform this check. The user is indeed logged in when running every command -- To view, visit http://gerrit.ovirt.org/29974 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I556d8da48a858ce193865e84fb6c7cb4043a8e5b Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Yair Zaslavsky <yzasl...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches