
com.github.joselion.lionspringsecurity.properties.AccessControlProperties Maven / Gradle / Ivy
package com.github.joselion.lionspringsecurity.properties;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import com.github.joselion.lionspringsecurity.core.LionSecurityConst;
public class AccessControlProperties {
/**
* Value for {@value #HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS} HTTP header
*
* @default value is {@value #allowCredentials}
*
*/
private Boolean allowCredentials = true;
/**
* Value for {@value #HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS} HTTP header
*
* @default value is {@value #allowHeadersToString()}
*
*/
private List allowHeaders = Arrays.asList(
HttpHeaders.ACCEPT,
HttpHeaders.AUTHORIZATION,
HttpHeaders.CONTENT_ENCODING,
HttpHeaders.CONTENT_TYPE,
HttpHeaders.ORIGIN,
"X-Requested-With",
LionSecurityConst.CSRF_HEADER_NAME
);
/**
* Value for {@value #HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS} HTTP header
*
* @default value is {@value #allowMethodsToString()}
*
*/
private List allowMethods = Arrays.asList(
HttpMethod.OPTIONS,
HttpMethod.GET,
HttpMethod.POST,
HttpMethod.PUT,
HttpMethod.DELETE
);
/**
* Value for {@value #HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS} HTTP header
*
* @default value is {@value #exposeHeadersToString()}
*
*/
private List exposeHeaders = Arrays.asList(
HttpHeaders.CONTENT_ENCODING,
HttpHeaders.CONTENT_TYPE,
LionSecurityConst.CSRF_HEADER_NAME
);
/**
* Value for {@value #HttpHeaders.ACCESS_CONTROL_MAX_AGE} HTTP header
*
* @default value is {@value #maxAge}
*
*/
private Integer maxAge = 3600;
public Boolean getAllowCredentials() {
return allowCredentials;
}
public void setAllowCredentials(Boolean allowCredentials) {
this.allowCredentials = allowCredentials;
}
public List getAllowHeaders() {
return allowHeaders;
}
public void setAllowHeaders(List allowHeaders) {
this.allowHeaders = allowHeaders;
}
public List getAllowMethods() {
return allowMethods;
}
public void setAllowMethods(List allowMethods) {
this.allowMethods = allowMethods;
}
public List getExposeHeaders() {
return exposeHeaders;
}
public void setExposeHeaders(List exposeHeaders) {
this.exposeHeaders = exposeHeaders;
}
public Integer getMaxAge() {
return maxAge;
}
public void setMaxAge(Integer maxAge) {
this.maxAge = maxAge;
}
public String allowHeadersToString() {
return String.join(", ", this.allowHeaders);
}
public String allowMethodsToString() {
List methods = this.allowMethods.stream().map(header -> header.name()).collect(Collectors.toList());
return String.join(", ", methods);
}
public String exposeHeadersToString() {
return String.join(", ", this.exposeHeaders);
}
}