Polish "Add support for Couchbase's role-based access"

Closes gh-16389
pull/16930/head
Stephane Nicoll 6 years ago
parent 3386856ccf
commit 2949561bf6

@ -59,13 +59,12 @@ public class CouchbaseConfiguration {
public Cluster couchbaseCluster() { public Cluster couchbaseCluster() {
CouchbaseCluster couchbaseCluster = CouchbaseCluster CouchbaseCluster couchbaseCluster = CouchbaseCluster
.create(couchbaseEnvironment(), determineBootstrapHosts()); .create(couchbaseEnvironment(), determineBootstrapHosts());
if (this.properties.getUsername().isEmpty() if (isRoleBasedAccessControlEnabled()) {
|| this.properties.getPassword().isEmpty()) {
return couchbaseCluster;
}
return couchbaseCluster.authenticate(this.properties.getUsername(), return couchbaseCluster.authenticate(this.properties.getUsername(),
this.properties.getPassword()); this.properties.getPassword());
} }
return couchbaseCluster;
}
/** /**
* Determine the Couchbase nodes to bootstrap from. * Determine the Couchbase nodes to bootstrap from.
@ -86,12 +85,16 @@ public class CouchbaseConfiguration {
@Bean @Bean
@Primary @Primary
public Bucket couchbaseClient() { public Bucket couchbaseClient() {
if (this.properties.getUsername().isEmpty() if (isRoleBasedAccessControlEnabled()) {
|| this.properties.getPassword().isEmpty()) { return couchbaseCluster().openBucket(this.properties.getBucket().getName());
}
return couchbaseCluster().openBucket(this.properties.getBucket().getName(), return couchbaseCluster().openBucket(this.properties.getBucket().getName(),
this.properties.getBucket().getPassword()); this.properties.getBucket().getPassword());
} }
return couchbaseCluster().openBucket(this.properties.getBucket().getName());
private boolean isRoleBasedAccessControlEnabled() {
return this.properties.getUsername() != null
&& this.properties.getPassword() != null;
} }
/** /**

@ -1,5 +1,5 @@
/* /*
* Copyright 2012-2018 the original author or authors. * Copyright 2012-2019 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
package org.springframework.boot.autoconfigure.couchbase; package org.springframework.boot.autoconfigure.couchbase;
import java.time.Duration; import java.time.Duration;
@ -37,19 +38,19 @@ public class CouchbaseProperties {
*/ */
private List<String> bootstrapHosts; private List<String> bootstrapHosts;
private final Bucket bucket = new Bucket();
private final Env env = new Env();
/** /**
* Password of the cluster on RBA(role base access). * Cluster username when using role based access.
*/ */
private String password = ""; private String username;
/** /**
* Username of the cluster on RBA(role base access). * Cluster password when using role based access.
*/ */
private String username = ""; private String password;
private final Bucket bucket = new Bucket();
private final Env env = new Env();
public List<String> getBootstrapHosts() { public List<String> getBootstrapHosts() {
return this.bootstrapHosts; return this.bootstrapHosts;
@ -59,12 +60,12 @@ public class CouchbaseProperties {
this.bootstrapHosts = bootstrapHosts; this.bootstrapHosts = bootstrapHosts;
} }
public Bucket getBucket() { public String getUsername() {
return this.bucket; return this.username;
} }
public Env getEnv() { public void setUsername(String username) {
return this.env; this.username = username;
} }
public String getPassword() { public String getPassword() {
@ -75,12 +76,12 @@ public class CouchbaseProperties {
this.password = password; this.password = password;
} }
public String getUsername() { public Bucket getBucket() {
return this.username; return this.bucket;
} }
public void setUsername(String username) { public Env getEnv() {
this.username = username; return this.env;
} }
public static class Bucket { public static class Bucket {

Loading…
Cancel
Save