From 95fe2fe74bcf069ae7ca0095c8c645b40da6365a Mon Sep 17 00:00:00 2001 From: mposolda Date: Wed, 30 Sep 2015 14:45:52 +0200 Subject: [PATCH] KEYCLOAK-904 offline tokens - migration --- .../migration/migrators/MigrateTo1_6_0.java | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/model/api/src/main/java/org/keycloak/migration/migrators/MigrateTo1_6_0.java b/model/api/src/main/java/org/keycloak/migration/migrators/MigrateTo1_6_0.java index e2db902c7e..ecb5482e41 100644 --- a/model/api/src/main/java/org/keycloak/migration/migrators/MigrateTo1_6_0.java +++ b/model/api/src/main/java/org/keycloak/migration/migrators/MigrateTo1_6_0.java @@ -4,9 +4,11 @@ import java.util.List; import org.keycloak.migration.ModelVersion; import org.keycloak.models.ClientModel; +import org.keycloak.models.Constants; import org.keycloak.models.KeycloakSession; import org.keycloak.models.RealmModel; import org.keycloak.models.RoleModel; +import org.keycloak.models.UserModel; import org.keycloak.models.utils.KeycloakModelUtils; /** @@ -19,17 +21,24 @@ public class MigrateTo1_6_0 { public void migrate(KeycloakSession session) { List realms = session.realms().getRealms(); for (RealmModel realm : realms) { + if (realm.getRole(Constants.OFFLINE_ACCESS_ROLE) == null) { + for (RoleModel realmRole : realm.getRoles()) { + realmRole.setScopeParamRequired(false); + } + for (ClientModel client : realm.getClients()) { + for (RoleModel clientRole : client.getRoles()) { + clientRole.setScopeParamRequired(false); + } + } - for (RoleModel realmRole : realm.getRoles()) { - realmRole.setScopeParamRequired(false); - } - for (ClientModel client : realm.getClients()) { - for (RoleModel clientRole : client.getRoles()) { - clientRole.setScopeParamRequired(false); + KeycloakModelUtils.setupOfflineTokens(realm); + RoleModel role = realm.getRole(Constants.OFFLINE_ACCESS_ROLE); + + // Check if possible to avoid iterating over users + for (UserModel user : session.userStorage().getUsers(realm, true)) { + user.grantRole(role); } } - - KeycloakModelUtils.setupOfflineTokens(realm); } }