package org.couchbase.mock.http;
import com.sun.net.httpserver.BasicAuthenticator;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpPrincipal;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.couchbase.mock.Bucket;
private String adminName;
private String adminPass;
private String bucketName;
private Map<String, Bucket> buckets;
public Authenticator(String username, String password, Map<String, Bucket> buckets) {
super("Couchbase Mock");
this.adminName = username;
this.adminPass = password;
this.buckets = buckets;
}
@Override
if (adminName.equals(username) && adminPass.equals(password)) {
return true;
}
Bucket bucket = buckets.get(username);
if (bucket == null || !bucketName.equals(username)) {
return false;
}
return bucket.getPassword().equals(password);
}
@Override
String requestPath = exchange.getRequestURI().getPath();
Matcher m = Pattern.compile("/pools/\\w+/buckets(Streaming)?/(\\w+)/?.*").matcher(requestPath);
bucketName = null;
if (m.find()) {
bucketName = m.group(2);
}
if (!exchange.getRequestHeaders().containsKey("Authorization")) {
Bucket bucket = buckets.get(bucketName);
if (bucket == null || bucket.getPassword().isEmpty()) {
return new Authenticator.Success(new HttpPrincipal("", realm));
}
}
return super.authenticate(exchange);
}
return adminName;
}
}