74 AuthorizationProvider authorizationProvider = session.getProvider(AuthorizationProvider.class);
75 StoreFactory storeFactory = authorizationProvider.getStoreFactory();
76 PolicyStore policyStore = storeFactory.getPolicyStore();
77 realm.getClients().forEach(clientModel -> {
78 ResourceServer resourceServer = storeFactory.getResourceServerStore().findById(clientModel.getId());
80 if (resourceServer != null) {
81 policyStore.findByType(
"role", resourceServer.getId()).forEach(policy -> {
82 Map<String, String> config =
new HashMap(policy.getConfig());
83 String roles = config.get(
"roles");
87 roleConfig = JsonSerialization.readValue(roles, List.class);
88 }
catch (Exception e) {
89 throw new RuntimeException(
"Malformed configuration for role policy [" + policy.getName() +
"].", e);
92 if (!roleConfig.isEmpty() && roleConfig.get(0) instanceof String) {
94 config.put(
"roles", JsonSerialization.writeValueAsString(roleConfig.stream().map(
new Function<String, Map>() {
96 public Map apply(String roleId) {
97 Map updated =
new HashMap();
99 updated.put(
"id", roleId);
103 }).collect(Collectors.toList())));
104 policy.setConfig(config);
105 }
catch (Exception e) {
106 throw new RuntimeException(
"Failed to migrate role policy [" + policy.getName() +
"].", e);