diff --git a/server/src/main/java/com/usatiuk/dhfs/objects/repository/PersistentRemoteHostsService.java b/server/src/main/java/com/usatiuk/dhfs/objects/repository/PersistentRemoteHostsService.java index a116d534..fcbed4da 100644 --- a/server/src/main/java/com/usatiuk/dhfs/objects/repository/PersistentRemoteHostsService.java +++ b/server/src/main/java/com/usatiuk/dhfs/objects/repository/PersistentRemoteHostsService.java @@ -219,6 +219,10 @@ public class PersistentRemoteHostsService { return getPeerDirectory().runReadLocked(JObject.ResolutionStrategy.LOCAL_ONLY, (m, d) -> d.getPeers().contains(uuid)); } + public PersistentPeerInfo getHost(UUID uuid) { + return getPeer(uuid).runReadLocked(JObject.ResolutionStrategy.LOCAL_ONLY, (m, d) -> d); + } + public KeyPair getSelfKeypair() { return _persistentData.runReadLocked(PersistentRemoteHostsData::getSelfKeyPair); } diff --git a/server/src/main/java/com/usatiuk/dhfs/objects/repository/peertrust/PeerRolesAugmentor.java b/server/src/main/java/com/usatiuk/dhfs/objects/repository/peertrust/PeerRolesAugmentor.java index 04f06d89..da90e7d6 100644 --- a/server/src/main/java/com/usatiuk/dhfs/objects/repository/peertrust/PeerRolesAugmentor.java +++ b/server/src/main/java/com/usatiuk/dhfs/objects/repository/peertrust/PeerRolesAugmentor.java @@ -10,6 +10,7 @@ import io.smallrye.mutiny.Uni; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; +import java.util.UUID; import java.util.function.Supplier; @ApplicationScoped @@ -28,17 +29,19 @@ public class PeerRolesAugmentor implements SecurityIdentityAugmentor { } else { QuarkusSecurityIdentity.Builder builder = QuarkusSecurityIdentity.builder(identity); - var entry = persistentRemoteHostsService.getHosts().stream() - .filter(i -> i.getUuid().toString() - .equals(identity.getPrincipal().getName().substring(3))) - .findFirst(); - if (entry.isEmpty()) return () -> identity; + var uuid = identity.getPrincipal().getName().substring(3); - if (!entry.get().getCertificate().equals(identity.getCredential(CertificateCredential.class).getCertificate())) + try { + var entry = persistentRemoteHostsService.getHost(UUID.fromString(uuid)); + + if (!entry.getCertificate().equals(identity.getCredential(CertificateCredential.class).getCertificate())) + return () -> identity; + + builder.addRole("cluster-member"); + return builder::build; + } catch (Exception e) { return () -> identity; - - builder.addRole("cluster-member"); - return builder::build; + } } } }