BasicAuthConfig.java
package com.bonitasoft.processbuilder.extension.template.auth;
import com.bonitasoft.processbuilder.extension.PasswordCrypto;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import java.util.Objects;
/**
* Configuration for HTTP Basic Authentication.
*
* @author Process Builder Team
* @since 2025-02-06
*/
public record BasicAuthConfig(
String username,
String password,
boolean preemptive
) implements AuthConfig {
public BasicAuthConfig(String username, String password) {
this(username, password, true);
}
public BasicAuthConfig {
Objects.requireNonNull(username, "Username cannot be null");
Objects.requireNonNull(password, "Password cannot be null");
}
@Override
public String getAuthType() {
return "basic";
}
@Override
public JsonNode toJson(ObjectMapper mapper) {
ObjectNode node = mapper.createObjectNode();
node.put("authType", getAuthType());
node.put("username", username);
node.put("password", password);
node.put("preemptive", preemptive);
return node;
}
@Override
public JsonNode toJsonEncrypted(ObjectMapper mapper) {
ObjectNode node = mapper.createObjectNode();
node.put("authType", getAuthType());
node.put("username", username);
String encryptedPassword = PasswordCrypto.isMasterPasswordConfigured()
? PasswordCrypto.encryptIfNeeded(password)
: password;
node.put("password", encryptedPassword);
node.put("preemptive", preemptive);
return node;
}
public static BasicAuthConfig fromJson(JsonNode node) {
return new BasicAuthConfig(
AuthConfig.getText(node, "username", ""),
AuthConfig.getText(node, "password", ""),
AuthConfig.getBoolean(node, "preemptive", true)
);
}
public static Builder builder() {
return new Builder();
}
public static class Builder {
private String username = "";
private String password = "";
private boolean preemptive = true;
public Builder username(String username) { this.username = username; return this; }
public Builder password(String password) { this.password = password; return this; }
public Builder preemptive(boolean preemptive) { this.preemptive = preemptive; return this; }
public BasicAuthConfig build() { return new BasicAuthConfig(username, password, preemptive); }
}
}