diff --git a/src/main/java/no/fintlabs/portal/model/FintCustomerObjectHandler.java b/src/main/java/no/fintlabs/portal/model/FintCustomerObjectHandler.java index 65e0189..ef3298f 100644 --- a/src/main/java/no/fintlabs/portal/model/FintCustomerObjectHandler.java +++ b/src/main/java/no/fintlabs/portal/model/FintCustomerObjectHandler.java @@ -28,7 +28,7 @@ protected FintCustomerObjectHandler(EntityTopicService entityTopicService, Entit entityTopic = EntityTopicNameParameters .builder() .orgId("flais.io") // Optional if set as application property - .domainContext("fint-service") // Optional if set as application property + .domainContext("fint-customer-objects") // Optional if set as application property .resource(objectType.getSimpleName().toLowerCase()) .build(); } diff --git a/src/main/java/no/fintlabs/portal/model/adapter/AdapterService.java b/src/main/java/no/fintlabs/portal/model/adapter/AdapterService.java index e63e284..3422867 100644 --- a/src/main/java/no/fintlabs/portal/model/adapter/AdapterService.java +++ b/src/main/java/no/fintlabs/portal/model/adapter/AdapterService.java @@ -84,16 +84,26 @@ public String getClientSecret(Adapter adapter) { @Override public void encryptClientSecret(Adapter adapter, String publicKeyString) { - adapter.setClientSecret(secretService.encryptPassword( - namOAuthClientService.getOAuthClient(adapter.getClientId()).getClientSecret(), - publicKeyString - )); + try { + adapter.setClientSecret(secretService.encryptPassword( + namOAuthClientService.getOAuthClient(adapter.getClientId()).getClientSecret(), + publicKeyString + )); + } catch (Exception e) { + log.error("Error when encrypting clientSecret" , e); + } + db.save(adapter); } @Override public void resetAndEncryptPassword(Adapter adapter, String privateKeyString) { - adapter.setPassword(secretService.encryptPassword(resetAdapterPassword(adapter), privateKeyString)); + try { + adapter.setPassword(secretService.encryptPassword(resetAdapterPassword(adapter), privateKeyString)); + } catch (Exception e) { + log.error("Error when encrypting password" , e); + } + db.save(adapter); } @@ -122,6 +132,17 @@ public Optional getAdapterByDnFromLdap(String dn) { } public Optional updateAdapter(Adapter adapter) { + + if (!StringUtils.hasText(adapter.getPassword()) && StringUtils.hasText(adapter.getPublicKey())) { + resetAndEncryptPassword(adapter, adapter.getPublicKey()); + log.warn("Get password because it's empty"); + } + + if (!StringUtils.hasText(adapter.getClientSecret()) && StringUtils.hasText(adapter.getPublicKey())) { + encryptClientSecret(adapter, adapter.getPublicKey()); + log.warn("Get clientSecret from nam because it's empty"); + } + if (ldapService.updateEntry(adapter)) { return getAdapterByDnFromLdap(adapter.getDn()) .map(updatedAdapter -> db.findById(LdapNameBuilder.newInstance(Objects.requireNonNull(updatedAdapter.getDn())).build()) diff --git a/src/main/java/no/fintlabs/portal/model/adapter/GetAdapterHandler.java b/src/main/java/no/fintlabs/portal/model/adapter/GetAdapterHandler.java index 6d9855d..2b2bc94 100644 --- a/src/main/java/no/fintlabs/portal/model/adapter/GetAdapterHandler.java +++ b/src/main/java/no/fintlabs/portal/model/adapter/GetAdapterHandler.java @@ -27,7 +27,11 @@ public String operation() { @Override public Adapter apply(ConsumerRecord consumerRecord, Organisation organisation) { - return adapterService.getAdapterByDn(consumerRecord.value().getObject().getDn()) - .orElseThrow(() -> new RuntimeException("Unable to find adapter: " + consumerRecord.value().getObject().getDn())); + String adapterDn = consumerRecord.value().getObject().getDn(); + return adapterService.getAdapterByDn(adapterDn) + .orElseGet(() -> { + log.warn("Unable to find adapter: {}", adapterDn); + return null; + }); } } diff --git a/src/main/java/no/fintlabs/portal/model/client/ClientService.java b/src/main/java/no/fintlabs/portal/model/client/ClientService.java index 4708f7c..93ec6ad 100644 --- a/src/main/java/no/fintlabs/portal/model/client/ClientService.java +++ b/src/main/java/no/fintlabs/portal/model/client/ClientService.java @@ -71,13 +71,7 @@ public Optional addClient(Client client, Organisation organisation) { .map(createdClient -> { createdClient.setPublicKey(client.getPublicKey()); resetAndEncryptPassword(createdClient, createdClient.getPublicKey()); - - try { - encryptClientSecret(createdClient, createdClient.getPublicKey()); - } catch (Exception e){ - log.error("Error in encrypt client secret ", e); - createdClient.setClientSecret(null); - } + encryptClientSecret(createdClient, createdClient.getPublicKey()); db.save(createdClient); @@ -98,16 +92,27 @@ public String getClientSecret(Client client) { @Override public void encryptClientSecret(Client client, String publicKeyString) { - client.setClientSecret(secretService.encryptPassword( - namOAuthClientService.getOAuthClient(client.getClientId()).getClientSecret(), - publicKeyString - )); + try { + client.setClientSecret(secretService.encryptPassword( + namOAuthClientService.getOAuthClient(client.getClientId()).getClientSecret(), + publicKeyString + )); + } catch (Exception e) { + log.error("Error when encrypt clientSecret ", e); + client.setClientSecret(null); + } + db.save(client); } @Override public void resetAndEncryptPassword(Client client, String privateKeyString) { - client.setPassword(secretService.encryptPassword(resetClientPassword(client), privateKeyString)); + try { + client.setPassword(secretService.encryptPassword(resetClientPassword(client), privateKeyString)); + } catch (Exception e) { + log.error("Error when encrypt clientSecret ", e); + client.setPassword(null); + } db.save(client); } diff --git a/src/main/java/no/fintlabs/portal/model/client/GetClientHandler.java b/src/main/java/no/fintlabs/portal/model/client/GetClientHandler.java index 184ad69..e6d7a8a 100644 --- a/src/main/java/no/fintlabs/portal/model/client/GetClientHandler.java +++ b/src/main/java/no/fintlabs/portal/model/client/GetClientHandler.java @@ -9,6 +9,8 @@ import org.apache.kafka.clients.consumer.ConsumerRecord; import org.springframework.stereotype.Component; +import java.util.Optional; + @Slf4j @Component public class GetClientHandler extends FintCustomerObjectWithSecretsHandler { @@ -28,7 +30,11 @@ public String operation() { @Override public Client apply(ConsumerRecord consumerRecord, Organisation organisation) { - return clientService.getClientByDn(consumerRecord.value().getObject().getDn()) - .orElseThrow(() -> new RuntimeException("Unable to find client: " + consumerRecord.value().getObject().getDn())); + String clientDn = consumerRecord.value().getObject().getDn(); + return clientService.getClientByDn(clientDn) + .orElseGet(() -> { + log.warn("Unable to find client: {}", clientDn); + return null; + }); } } diff --git a/src/main/java/no/fintlabs/portal/model/organisation/OrganisationEventHandler.java b/src/main/java/no/fintlabs/portal/model/organisation/OrganisationEventHandler.java index ff021d6..2b7fc7b 100644 --- a/src/main/java/no/fintlabs/portal/model/organisation/OrganisationEventHandler.java +++ b/src/main/java/no/fintlabs/portal/model/organisation/OrganisationEventHandler.java @@ -32,7 +32,7 @@ public OrganisationEventHandler(EventTopicService eventTopicService, EventConsum organisationCreatedTopic = EventTopicNameParameters .builder() .orgId("flais.io") // Optional if set as application property - .domainContext("fint-service") // Optional if set as application property + .domainContext("fint-customer-objects") // Optional if set as application property .eventName("organisation-created") .build(); @@ -45,7 +45,7 @@ public void init() { EventTopicNameParameters createOrganisationTopic = EventTopicNameParameters .builder() .orgId("flais.io") // Optional if set as application property - .domainContext("fint-service") // Optional if set as application property + .domainContext("fint-customer-objects") // Optional if set as application property .eventName("new-organisation") .build(); eventTopicService.ensureTopic(createOrganisationTopic, Duration.ofHours(48).toMillis());