commit
802488cea0
7 changed files with 49 additions and 29 deletions
|
@ -433,25 +433,23 @@ public class UserAdapter implements UserModel {
|
|||
|
||||
@Override
|
||||
public List<UserCredentialValueModel> getCredentialsDirectly() {
|
||||
List<CredentialEntity> credentials = new ArrayList<CredentialEntity>(user.getCredentials());
|
||||
List<UserCredentialValueModel> result = new ArrayList<UserCredentialValueModel>();
|
||||
List<CredentialEntity> credentials = new ArrayList<>(user.getCredentials());
|
||||
List<UserCredentialValueModel> result = new ArrayList<>();
|
||||
|
||||
if (credentials != null) {
|
||||
for (CredentialEntity credEntity : credentials) {
|
||||
UserCredentialValueModel credModel = new UserCredentialValueModel();
|
||||
credModel.setType(credEntity.getType());
|
||||
credModel.setDevice(credEntity.getDevice());
|
||||
credModel.setValue(credEntity.getValue());
|
||||
credModel.setCreatedDate(credEntity.getCreatedDate());
|
||||
credModel.setSalt(credEntity.getSalt());
|
||||
credModel.setHashIterations(credEntity.getHashIterations());
|
||||
credModel.setCounter(credEntity.getCounter());
|
||||
credModel.setAlgorithm(credEntity.getAlgorithm());
|
||||
credModel.setDigits(credEntity.getDigits());
|
||||
credModel.setPeriod(credEntity.getPeriod());
|
||||
for (CredentialEntity credEntity : credentials) {
|
||||
UserCredentialValueModel credModel = new UserCredentialValueModel();
|
||||
credModel.setType(credEntity.getType());
|
||||
credModel.setDevice(credEntity.getDevice());
|
||||
credModel.setValue(credEntity.getValue());
|
||||
credModel.setCreatedDate(credEntity.getCreatedDate());
|
||||
credModel.setSalt(credEntity.getSalt());
|
||||
credModel.setHashIterations(credEntity.getHashIterations());
|
||||
credModel.setCounter(credEntity.getCounter());
|
||||
credModel.setAlgorithm(credEntity.getAlgorithm());
|
||||
credModel.setDigits(credEntity.getDigits());
|
||||
credModel.setPeriod(credEntity.getPeriod());
|
||||
|
||||
result.add(credModel);
|
||||
}
|
||||
result.add(credModel);
|
||||
}
|
||||
|
||||
return result;
|
||||
|
|
|
@ -710,7 +710,12 @@ public class ClientAdapter extends AbstractMongoAdapter<MongoClientEntity> imple
|
|||
|
||||
@Override
|
||||
public void setClientTemplate(ClientTemplateModel template) {
|
||||
getMongoEntity().setClientTemplate(template.getId());
|
||||
if (template == null) {
|
||||
getMongoEntity().setClientTemplate(null);
|
||||
} else {
|
||||
getMongoEntity().setClientTemplate(template.getId());
|
||||
}
|
||||
|
||||
updateMongoEntity();
|
||||
|
||||
}
|
||||
|
|
|
@ -382,6 +382,8 @@ public class UserAdapter extends AbstractMongoAdapter<MongoUserEntity> implement
|
|||
credModel.setValue(credEntity.getValue());
|
||||
credModel.setSalt(credEntity.getSalt());
|
||||
credModel.setHashIterations(credEntity.getHashIterations());
|
||||
credModel.setAlgorithm(credEntity.getAlgorithm());
|
||||
|
||||
if (UserCredentialModel.isOtp(credEntity.getType())) {
|
||||
credModel.setCounter(credEntity.getCounter());
|
||||
if (credEntity.getAlgorithm() == null) {
|
||||
|
|
|
@ -1,25 +1,15 @@
|
|||
package org.keycloak.models.mongo.keycloak.entities;
|
||||
|
||||
import com.mongodb.DBObject;
|
||||
import com.mongodb.QueryBuilder;
|
||||
import org.jboss.logging.Logger;
|
||||
import org.keycloak.connections.mongo.api.MongoCollection;
|
||||
import org.keycloak.connections.mongo.api.MongoField;
|
||||
import org.keycloak.connections.mongo.api.MongoIdentifiableEntity;
|
||||
import org.keycloak.connections.mongo.api.MongoStore;
|
||||
import org.keycloak.connections.mongo.api.context.MongoStoreInvocationContext;
|
||||
import org.keycloak.models.entities.GroupEntity;
|
||||
import org.keycloak.models.entities.RoleEntity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*/
|
||||
@MongoCollection(collectionName = "groups")
|
||||
public class MongoGroupEntity extends GroupEntity implements MongoIdentifiableEntity {
|
||||
|
||||
private static final Logger logger = Logger.getLogger(MongoGroupEntity.class);
|
||||
|
||||
@Override
|
||||
public void afterRemove(MongoStoreInvocationContext invContext) {
|
||||
}
|
||||
|
|
|
@ -26,6 +26,12 @@ public class MongoRealmEntity extends RealmEntity implements MongoIdentifiableEn
|
|||
// Remove all roles of this realm
|
||||
context.getMongoStore().removeEntities(MongoRoleEntity.class, query, true, context);
|
||||
|
||||
// Remove all client templates of this realm
|
||||
context.getMongoStore().removeEntities(MongoClientTemplateEntity.class, query, true, context);
|
||||
|
||||
// Remove all client templates of this realm
|
||||
context.getMongoStore().removeEntities(MongoGroupEntity.class, query, true, context);
|
||||
|
||||
// Remove all clients of this realm
|
||||
context.getMongoStore().removeEntities(MongoClientEntity.class, query, true, context);
|
||||
}
|
||||
|
|
|
@ -359,6 +359,7 @@
|
|||
<systemPropertyVariables>
|
||||
<keycloak.realm.provider>jpa</keycloak.realm.provider>
|
||||
<keycloak.user.provider>jpa</keycloak.user.provider>
|
||||
<keycloak.userSessionPersister.provider>jpa</keycloak.userSessionPersister.provider>
|
||||
<keycloak.eventsStore.provider>jpa</keycloak.eventsStore.provider>
|
||||
|
||||
<keycloak.liquibase.logging.level>debug</keycloak.liquibase.logging.level>
|
||||
|
@ -397,6 +398,7 @@
|
|||
<systemPropertyVariables>
|
||||
<keycloak.realm.provider>mongo</keycloak.realm.provider>
|
||||
<keycloak.user.provider>mongo</keycloak.user.provider>
|
||||
<keycloak.userSessionPersister.provider>mongo</keycloak.userSessionPersister.provider>
|
||||
<keycloak.eventsStore.provider>mongo</keycloak.eventsStore.provider>
|
||||
<keycloak.connectionsMongo.host>${keycloak.connectionsMongo.host}</keycloak.connectionsMongo.host>
|
||||
<keycloak.connectionsMongo.port>${keycloak.connectionsMongo.port}</keycloak.connectionsMongo.port>
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
package org.keycloak.testsuite.federation.ldap.base;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.ClassRule;
|
||||
import org.junit.FixMethodOrder;
|
||||
import org.junit.Test;
|
||||
|
@ -77,6 +80,20 @@ public class LDAPGroupMapperSyncTest {
|
|||
.outerRule(ldapRule)
|
||||
.around(keycloakRule);
|
||||
|
||||
@Before
|
||||
public void before() {
|
||||
KeycloakSession session = keycloakRule.startSession();
|
||||
try {
|
||||
RealmModel realm = session.realms().getRealmByName("test");
|
||||
List<GroupModel> kcGroups = realm.getTopLevelGroups();
|
||||
for (GroupModel kcGroup : kcGroups) {
|
||||
realm.removeGroup(kcGroup);
|
||||
}
|
||||
} finally {
|
||||
keycloakRule.stopSession(session, true);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test01_syncNoPreserveGroupInheritance() throws Exception {
|
||||
KeycloakSession session = keycloakRule.startSession();
|
||||
|
@ -213,7 +230,7 @@ public class LDAPGroupMapperSyncTest {
|
|||
// Sync groups again from LDAP. Assert LDAP non-existing groups deleted
|
||||
syncResult = new GroupLDAPFederationMapperFactory().create(session).syncDataFromFederationProviderToKeycloak(mapperModel, ldapProvider, session, realm);
|
||||
Assert.assertEquals(3, syncResult.getUpdated());
|
||||
Assert.assertTrue(syncResult.getRemoved() >= 2);
|
||||
Assert.assertTrue(syncResult.getRemoved() == 2);
|
||||
|
||||
// Sync and assert groups updated
|
||||
Assert.assertNotNull(KeycloakModelUtils.findGroupByPath(realm, "/group1/group11"));
|
||||
|
|
Loading…
Reference in a new issue