@Override protected void generateStatementsImpl() throws CustomChangeException { realmTableName = database.correctObjectName("REALM", Table.class); try { convertSocialToIdFedRealms(); convertSocialToIdFedUsers(); addAccessCodeLoginTimeout(); addNewAdminRoles(); addDefaultProtocolMappers(); } catch (Exception e) { throw new CustomChangeException(getTaskId() + ": Exception when updating data from previous version", e); } }
protected void addNewRealmAdminRoles() throws SQLException, DatabaseException { PreparedStatement statement = jdbcConnection.prepareStatement("select CLIENT.ID REALM_ADMIN_APP_ID, CLIENT.REALM_ID REALM_ID, KEYCLOAK_ROLE.ID ADMIN_ROLE_ID from " + getTableName("CLIENT") + " CLIENT," + getTableName("KEYCLOAK_ROLE") + " KEYCLOAK_ROLE where KEYCLOAK_ROLE.APPLICATION = CLIENT.ID AND CLIENT.NAME = 'realm-management' AND KEYCLOAK_ROLE.NAME = ?"); statement.setString(1, AdminRoles.REALM_ADMIN); try { ResultSet resultSet = statement.executeQuery(); try { while (resultSet.next()) { String realmAdminAppId = resultSet.getString("REALM_ADMIN_APP_ID"); String realmId = resultSet.getString("REALM_ID"); String adminRoleId = resultSet.getString("ADMIN_ROLE_ID"); addAdminRole(AdminRoles.VIEW_IDENTITY_PROVIDERS, realmId, realmAdminAppId, adminRoleId); addAdminRole(AdminRoles.MANAGE_IDENTITY_PROVIDERS, realmId, realmAdminAppId, adminRoleId); } } finally { resultSet.close(); } } finally { statement.close(); } }
private void addNewAdminRoles() throws SQLException, DatabaseException{ addNewMasterAdminRoles(); addNewRealmAdminRoles(); confirmationMessage.append("Adding new admin roles. "); }
protected void addNewMasterAdminRoles() throws SQLException, DatabaseException { String adminRoleId = getAdminRoleId(); String masterRealmId = Config.getAdminRealm(); PreparedStatement statement = jdbcConnection.prepareStatement("select NAME from " + getTableName("REALM")); try { ResultSet resultSet = statement.executeQuery(); String masterAdminAppName = realmName + "-realm"; PreparedStatement statement2 = jdbcConnection.prepareStatement("select ID from " + getTableName("CLIENT") + " where REALM_ID = ? AND NAME = ?"); statement2.setString(1, masterRealmId); statement2.setString(2, masterAdminAppName); String masterAdminAppId = resultSet2.getString("ID"); addAdminRole(AdminRoles.VIEW_IDENTITY_PROVIDERS, masterRealmId, masterAdminAppId, adminRoleId); addAdminRole(AdminRoles.MANAGE_IDENTITY_PROVIDERS, masterRealmId, masterAdminAppId, adminRoleId); } else { throw new IllegalStateException("Couldn't find ID of '" + masterAdminAppName + "' application in 'master' realm. ");
private String getAdminRoleId() throws SQLException, DatabaseException { PreparedStatement statement = jdbcConnection.prepareStatement("select ID from " + getTableName("KEYCLOAK_ROLE") + " where NAME = ? AND REALM = ?"); statement.setString(1, AdminRoles.ADMIN); statement.setString(2, Config.getAdminRealm()); try { ResultSet resultSet = statement.executeQuery(); try { if (resultSet.next()) { return resultSet.getString("ID"); } else { throw new IllegalStateException("Couldn't find ID of 'admin' role in 'master' realm"); } } finally { resultSet.close(); } } finally { statement.close(); } }
protected void addNewMasterAdminRoles() throws SQLException, DatabaseException { String adminRoleId = getAdminRoleId(); String masterRealmId = Config.getAdminRealm(); PreparedStatement statement = jdbcConnection.prepareStatement("select NAME from " + getTableName("REALM")); try { ResultSet resultSet = statement.executeQuery(); String masterAdminAppName = realmName + "-realm"; PreparedStatement statement2 = jdbcConnection.prepareStatement("select ID from " + getTableName("CLIENT") + " where REALM_ID = ? AND NAME = ?"); statement2.setString(1, masterRealmId); statement2.setString(2, masterAdminAppName); String masterAdminAppId = resultSet2.getString("ID"); addAdminRole(AdminRoles.VIEW_IDENTITY_PROVIDERS, masterRealmId, masterAdminAppId, adminRoleId); addAdminRole(AdminRoles.MANAGE_IDENTITY_PROVIDERS, masterRealmId, masterAdminAppId, adminRoleId); } else { throw new IllegalStateException("Couldn't find ID of '" + masterAdminAppName + "' application in 'master' realm. ");
private String getAdminRoleId() throws SQLException, DatabaseException { PreparedStatement statement = jdbcConnection.prepareStatement("select ID from " + getTableName("KEYCLOAK_ROLE") + " where NAME = ? AND REALM = ?"); statement.setString(1, AdminRoles.ADMIN); statement.setString(2, Config.getAdminRealm()); try { ResultSet resultSet = statement.executeQuery(); try { if (resultSet.next()) { return resultSet.getString("ID"); } else { throw new IllegalStateException("Couldn't find ID of 'admin' role in 'master' realm"); } } finally { resultSet.close(); } } finally { statement.close(); } }
@Override protected void generateStatementsImpl() throws CustomChangeException { realmTableName = database.correctObjectName("REALM", Table.class); try { convertSocialToIdFedRealms(); convertSocialToIdFedUsers(); addAccessCodeLoginTimeout(); addNewAdminRoles(); addDefaultProtocolMappers(); } catch (Exception e) { throw new CustomChangeException(getTaskId() + ": Exception when updating data from previous version", e); } }
private void addNewAdminRoles() throws SQLException, DatabaseException{ addNewMasterAdminRoles(); addNewRealmAdminRoles(); confirmationMessage.append("Adding new admin roles. "); }
protected void convertSocialToIdFedUsers() throws SQLException, DatabaseException { String federatedIdentityTableName = database.correctObjectName("FEDERATED_IDENTITY", Table.class); PreparedStatement statement = jdbcConnection.prepareStatement("select REALM_ID, USER_ID, SOCIAL_PROVIDER, SOCIAL_USER_ID, SOCIAL_USERNAME from " + getTableName("USER_SOCIAL_LINK")); try { ResultSet resultSet = statement.executeQuery(); try { int count = 0; while (resultSet.next()) { InsertStatement insert = new InsertStatement(null, null, federatedIdentityTableName) .addColumnValue("REALM_ID", resultSet.getString("REALM_ID")) .addColumnValue("USER_ID", resultSet.getString("USER_ID")) .addColumnValue("IDENTITY_PROVIDER", resultSet.getString("SOCIAL_PROVIDER")) .addColumnValue("FEDERATED_USER_ID", resultSet.getString("SOCIAL_USER_ID")) .addColumnValue("FEDERATED_USERNAME", resultSet.getString("SOCIAL_USERNAME")); count++; statements.add(insert); } confirmationMessage.append("Updating " + count + " social links to federated identities. "); } finally { resultSet.close(); } } finally { statement.close(); } }
protected void addNewRealmAdminRoles() throws SQLException, DatabaseException { PreparedStatement statement = jdbcConnection.prepareStatement("select CLIENT.ID REALM_ADMIN_APP_ID, CLIENT.REALM_ID REALM_ID, KEYCLOAK_ROLE.ID ADMIN_ROLE_ID from " + getTableName("CLIENT") + " CLIENT," + getTableName("KEYCLOAK_ROLE") + " KEYCLOAK_ROLE where KEYCLOAK_ROLE.APPLICATION = CLIENT.ID AND CLIENT.NAME = 'realm-management' AND KEYCLOAK_ROLE.NAME = ?"); statement.setString(1, AdminRoles.REALM_ADMIN); try { ResultSet resultSet = statement.executeQuery(); try { while (resultSet.next()) { String realmAdminAppId = resultSet.getString("REALM_ADMIN_APP_ID"); String realmId = resultSet.getString("REALM_ID"); String adminRoleId = resultSet.getString("ADMIN_ROLE_ID"); addAdminRole(AdminRoles.VIEW_IDENTITY_PROVIDERS, realmId, realmAdminAppId, adminRoleId); addAdminRole(AdminRoles.MANAGE_IDENTITY_PROVIDERS, realmId, realmAdminAppId, adminRoleId); } } finally { resultSet.close(); } } finally { statement.close(); } }
protected void convertSocialToIdFedUsers() throws SQLException, DatabaseException { String federatedIdentityTableName = database.correctObjectName("FEDERATED_IDENTITY", Table.class); PreparedStatement statement = jdbcConnection.prepareStatement("select REALM_ID, USER_ID, SOCIAL_PROVIDER, SOCIAL_USER_ID, SOCIAL_USERNAME from " + getTableName("USER_SOCIAL_LINK")); try { ResultSet resultSet = statement.executeQuery(); try { int count = 0; while (resultSet.next()) { InsertStatement insert = new InsertStatement(null, null, federatedIdentityTableName) .addColumnValue("REALM_ID", resultSet.getString("REALM_ID")) .addColumnValue("USER_ID", resultSet.getString("USER_ID")) .addColumnValue("IDENTITY_PROVIDER", resultSet.getString("SOCIAL_PROVIDER")) .addColumnValue("FEDERATED_USER_ID", resultSet.getString("SOCIAL_USER_ID")) .addColumnValue("FEDERATED_USERNAME", resultSet.getString("SOCIAL_USERNAME")); count++; statements.add(insert); } confirmationMessage.append("Updating " + count + " social links to federated identities. "); } finally { resultSet.close(); } } finally { statement.close(); } }
String idpConfigTableName = database.correctObjectName("IDENTITY_PROVIDER_CONFIG", Table.class); String realmSocialConfigTable = getTableName("REALM_SOCIAL_CONFIG"); String realmTableName = getTableName("REALM"); PreparedStatement statement = jdbcConnection.prepareStatement("select RSC.NAME, VALUE, REALM_ID, UPDATE_PROFILE_ON_SOC_LOGIN from " + realmSocialConfigTable + " RSC," + realmTableName + " REALM where RSC.REALM_ID = REALM.ID ORDER BY RSC.REALM_ID, RSC.NAME");
String idpConfigTableName = database.correctObjectName("IDENTITY_PROVIDER_CONFIG", Table.class); String realmSocialConfigTable = getTableName("REALM_SOCIAL_CONFIG"); String realmTableName = getTableName("REALM"); PreparedStatement statement = jdbcConnection.prepareStatement("select RSC.NAME, VALUE, REALM_ID, UPDATE_PROFILE_ON_SOC_LOGIN from " + realmSocialConfigTable + " RSC," + realmTableName + " REALM where RSC.REALM_ID = REALM.ID ORDER BY RSC.REALM_ID, RSC.NAME");
String protocolMapperCfgTableName = database.correctObjectName("PROTOCOL_MAPPER_CONFIG", Table.class); PreparedStatement statement = jdbcConnection.prepareStatement("select ID, NAME, ALLOWED_CLAIMS_MASK from " + getTableName("CLIENT"));
String protocolMapperCfgTableName = database.correctObjectName("PROTOCOL_MAPPER_CONFIG", Table.class); PreparedStatement statement = jdbcConnection.prepareStatement("select ID, NAME, ALLOWED_CLAIMS_MASK from " + getTableName("CLIENT"));