Skip to content

Commit

Permalink
Extract hard-coded cryptomatorvaults client to application.properties (
Browse files Browse the repository at this point in the history
  • Loading branch information
chenkins committed Nov 15, 2023
1 parent ea49396 commit e4c4950
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 14 deletions.
15 changes: 5 additions & 10 deletions backend/src/main/java/org/cryptomator/hub/api/VaultResource.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import org.cryptomator.hub.SyncerConfig;
import org.cryptomator.hub.api.cipherduck.CipherduckConfig;
import org.cryptomator.hub.entities.AccessToken;
import org.cryptomator.hub.entities.AuditEventVaultAccessGrant;
import org.cryptomator.hub.entities.AuditEventVaultCreate;
Expand Down Expand Up @@ -92,12 +93,7 @@ public class VaultResource {

// / start cipherduck extension
@Inject
@ConfigProperty(name = "quarkus.oidc.client-id", defaultValue = "")
String keycloakClientIdHub;

@Inject
@ConfigProperty(name = "hub.keycloak.oidc.cryptomator-client-id", defaultValue = "")
String keycloakClientIdCryptomator;
CipherduckConfig cipherduckConfig;
// \ end cipherduck extension

@GET
Expand Down Expand Up @@ -187,8 +183,7 @@ public Response addUser(@PathParam("vaultId") UUID vaultId, @PathParam("userId")
}

// / start cipherduck extension

keycloakGrantAccessToVault(syncerConfig, vaultId.toString(), userId, "cryptomatorvaults");
keycloakGrantAccessToVault(syncerConfig, vaultId.toString(), userId, cipherduckConfig.keycloakClientIdCryptomatorVaults());
// \ end cipherduck extension

return addAuthority(vault, user, role);
Expand Down Expand Up @@ -218,7 +213,7 @@ public Response addGroup(@PathParam("vaultId") UUID vaultId, @PathParam("groupId
}

// / start cipherduck extension
keycloakGrantAccessToVault(syncerConfig, vaultId.toString(), groupId, "cryptomatorvaults");
keycloakGrantAccessToVault(syncerConfig, vaultId.toString(), groupId, cipherduckConfig.keycloakClientIdCryptomatorVaults());
// \ end cipherduck extension

return addAuthority(vault, group, role);
Expand Down Expand Up @@ -453,7 +448,7 @@ public Response createOrUpdate(@PathParam("vaultId") UUID vaultId, @Valid @NotNu
AuditEventVaultMemberAdd.log(currentUser.id, vaultId, currentUser.id, VaultAccess.Role.OWNER);

// / start cipherduck extension
keycloakGrantAccessToVault(syncerConfig, vaultId.toString(), currentUser.id, "cryptomatorvaults");
keycloakGrantAccessToVault(syncerConfig, vaultId.toString(), currentUser.id, cipherduckConfig.keycloakClientIdCryptomatorVaults());
// \ end cipherduck extension

return Response.created(URI.create(".")).contentLocation(URI.create(".")).entity(VaultDto.fromEntity(vault)).type(MediaType.APPLICATION_JSON).build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,11 @@ public class BackendsConfigResource {
@APIResponse(responseCode = "200", description = "uploaded storage configuration")
public BackendsConfigDto getBackendsConfig() {
return new BackendsConfigDto(Settings.get().hubId, backendsConfig.backends().stream()
// TODO https://github.com/chenkins/cipherduck-hub/issues/41 hard-coded cryptomatorvaults
.map(b -> new StorageConfigDto(b, new VaultJWEBackendDto(b.jwe(),
cipherduckConfig.authEndpoint(),
cipherduckConfig.tokenEndpoint(),
cipherduckConfig.keycloakClientIdCryptomator(),
"cryptomatorvaults",
cipherduckConfig.keycloakClientIdCryptomatorVaults(),
Settings.get().hubId
)))
.collect(Collectors.toList()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import jakarta.inject.Inject;
import org.eclipse.microprofile.config.inject.ConfigProperty;

// TODO review: backport to ConfigResource.ConfigDto upstream?
@ApplicationScoped
public class CipherduckConfig {
@Inject
Expand All @@ -25,6 +26,10 @@ public class CipherduckConfig {
@ConfigProperty(name = "hub.keycloak.oidc.cryptomator-client-id", defaultValue = "")
String keycloakClientIdCryptomator;

@Inject
@ConfigProperty(name = "hub.keycloak.oidc.cryptomator-vaults-client-id", defaultValue = "")
String keycloakClientIdCryptomatorVaults;

@Inject
@ConfigProperty(name = "quarkus.oidc.auth-server-url")
String internalRealmUrl;
Expand All @@ -49,13 +54,19 @@ String trimTrailingSlash(String str) {
}

}

public String keycloakClientIdHub() {
return keycloakClientIdHub;
}

public String keycloakClientIdCryptomator() {
return keycloakClientIdCryptomator;
}

public String keycloakClientIdCryptomatorVaults() {
return keycloakClientIdCryptomatorVaults;
}

public String publicRealmUri() {
return trimTrailingSlash(keycloakPublicUrl + "/realms/" + keycloakRealm);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ public class StorageResource {
@Inject
SyncerConfig syncerConfig;

@Inject
CipherduckConfig cipherduckConfig;

@Inject
JsonWebToken jwt;

Expand All @@ -58,8 +61,7 @@ public Response createBucket(@PathParam("vaultId") UUID vaultId, StorageDto dto)

makeS3Bucket(storageConfig, dto);

// TODO https://github.com/chenkins/cipherduck-hub/issues/41 hard-coded cryptomatorvaults
keycloakPrepareVault(syncerConfig, vaultId.toString(), storageConfig, jwt.getSubject(), "cryptomatorvaults");
keycloakPrepareVault(syncerConfig, vaultId.toString(), storageConfig, jwt.getSubject(), cipherduckConfig.keycloakClientIdCryptomatorVaults());

return Response.created(URI.create(".")).build();
}
Expand Down
1 change: 1 addition & 0 deletions backend/src/main/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ quarkus.oidc.client-id=cryptomatorhub
%cipherduck-staging.quarkus.oidc.client-id=cryptomator
%cipherduck-testing.quarkus.oidc.client-id=cryptomator
hub.keycloak.oidc.cryptomator-client-id=cryptomator
hub.keycloak.oidc.cryptomator-vaults-client-id=cryptomatorvaults


# Keycloak dev service
Expand Down

0 comments on commit e4c4950

Please sign in to comment.