Skip to content

Commit

Permalink
feat: CR should support person loads from AD servers with different
Browse files Browse the repository at this point in the history
primary key attribute names #2333
  • Loading branch information
yurem committed Apr 6, 2023
1 parent e218bf4 commit 5c66e1a
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@
import org.gluu.model.SchemaEntry;
import org.gluu.model.custom.script.model.bind.BindCredentials;
import org.gluu.model.ldap.GluuLdapConfiguration;
import org.gluu.oxtrust.service.config.ConfigurationFactory;
import org.gluu.oxtrust.ldap.cache.model.CacheCompoundKey;
import org.gluu.oxtrust.ldap.cache.model.GluuInumMap;
import org.gluu.oxtrust.ldap.cache.model.GluuSimplePerson;
Expand All @@ -59,6 +58,7 @@
import org.gluu.oxtrust.service.PairwiseIdService;
import org.gluu.oxtrust.service.PersonService;
import org.gluu.oxtrust.service.cdi.event.CacheRefreshEvent;
import org.gluu.oxtrust.service.config.ConfigurationFactory;
import org.gluu.oxtrust.service.external.ExternalCacheRefreshService;
import org.gluu.oxtrust.util.OxTrustConstants;
import org.gluu.oxtrust.util.PropertyUtil;
Expand All @@ -68,7 +68,6 @@
import org.gluu.persist.exception.BasePersistenceException;
import org.gluu.persist.exception.EntryPersistenceException;
import org.gluu.persist.exception.operation.SearchException;
import org.gluu.persist.ldap.impl.LdapEntryManager;
import org.gluu.persist.ldap.impl.LdapEntryManagerFactory;
import org.gluu.persist.ldap.operation.LdapOperationService;
import org.gluu.persist.model.SearchScope;
Expand Down Expand Up @@ -920,6 +919,7 @@ private List<GluuSimplePerson> loadSourceServerEntriesWithoutLimits(
// Add to result and ignore root entry if needed
for (GluuSimplePerson currentSourcePerson : currentSourcePersons) {
currentSourcePerson.setSourceServerName(sourceServerName);
externalCacheRefreshService.executeExternalUpdateSourceUserMethods(currentSourcePerson);
// if (!StringHelper.equalsIgnoreCase(baseDn,
// currentSourcePerson.getDn())) {
String currentSourcePersonDn = currentSourcePerson.getDn().toLowerCase();
Expand Down Expand Up @@ -969,6 +969,7 @@ private List<GluuSimplePerson> loadSourceServerEntries(CacheRefreshConfiguration
// Add to result and ignore root entry if needed
for (GluuSimplePerson currentSourcePerson : currentSourcePersons) {
currentSourcePerson.setSourceServerName(sourceServerName);
externalCacheRefreshService.executeExternalUpdateSourceUserMethods(currentSourcePerson);
// if (!StringHelper.equalsIgnoreCase(baseDn,
// currentSourcePerson.getDn())) {
String currentSourcePersonDn = currentSourcePerson.getDn().toLowerCase();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import org.gluu.model.custom.script.conf.CustomScriptConfiguration;
import org.gluu.model.custom.script.model.bind.BindCredentials;
import org.gluu.model.custom.script.type.user.CacheRefreshType;
import org.gluu.oxtrust.ldap.cache.model.GluuSimplePerson;
import org.gluu.oxtrust.model.GluuCustomPerson;
import org.gluu.service.custom.script.ExternalScriptService;
import org.gluu.util.StringHelper;
Expand Down Expand Up @@ -49,6 +50,25 @@ public boolean executeExternalUpdateUserMethod(CustomScriptConfiguration customS
return false;
}

public boolean executeExternalUpdateSourceUserMethod(CustomScriptConfiguration customScriptConfiguration, GluuSimplePerson user) {
try {
CacheRefreshType externalType = (CacheRefreshType) customScriptConfiguration.getExternalType();
Map<String, SimpleCustomProperty> configurationAttributes = customScriptConfiguration.getConfigurationAttributes();

// Execute only if API > 3
if (externalType.getApiVersion() > 3) {
log.debug("Executing python 'updateSourceUser' method");

return externalType.updateSourceUser(user, configurationAttributes);
}
} catch (Exception ex) {
log.error(ex.getMessage(), ex);
saveScriptError(customScriptConfiguration.getCustomScript(), ex);
}

return false;
}

public BindCredentials executeExternalGetBindCredentialsMethod(CustomScriptConfiguration customScriptConfiguration, String configId) {
try {
log.debug("Executing python 'getBindCredentialsMethod' method");
Expand Down Expand Up @@ -97,6 +117,18 @@ public boolean executeExternalUpdateUserMethods(GluuCustomPerson user) {
return result;
}

public boolean executeExternalUpdateSourceUserMethods(GluuSimplePerson user) {
boolean result = true;
for (CustomScriptConfiguration customScriptConfiguration : this.customScriptConfigurations) {
result &= executeExternalUpdateSourceUserMethod(customScriptConfiguration, user);
if (!result) {
return result;
}
}

return result;
}

public BindCredentials executeExternalGetBindCredentialsMethods(String configId) {
BindCredentials result = null;
for (CustomScriptConfiguration customScriptConfiguration : this.customScriptConfigurations) {
Expand Down

0 comments on commit 5c66e1a

Please sign in to comment.