package org.apereo.cas.configuration.model.support.jdbc;
import org.apache.commons.lang3.StringUtils;
import org.apereo.cas.configuration.model.core.authentication.PasswordEncoderProperties;
import org.apereo.cas.configuration.model.core.authentication.PrincipalTransformationProperties;
import org.apereo.cas.configuration.model.support.jpa.AbstractJpaProperties;
import org.springframework.boot.context.properties.NestedConfigurationProperty;
import java.util.ArrayList;
import java.util.List;
/**
* This is {@link JdbcAuthenticationProperties}.
*
* @author Misagh Moayyed
* @since 5.0.0
*/
public class JdbcAuthenticationProperties {
private List<Search> search = new ArrayList();
private List<Encode> encode = new ArrayList();
private List<Query> query = new ArrayList();
private List<Bind> bind = new ArrayList();
public List<Search> getSearch() {
return search;
}
public void setSearch(final List<Search> search) {
this.search = search;
}
public List<Encode> getEncode() {
return encode;
}
public void setEncode(final List<Encode> encode) {
this.encode = encode;
}
public List<Query> getQuery() {
return query;
}
public void setQuery(final List<Query> query) {
this.query = query;
}
public List<Bind> getBind() {
return bind;
}
public void setBind(final List<Bind> bind) {
this.bind = bind;
}
public static class Query extends AbstractJpaProperties {
private String sql;
private String credentialCriteria;
private String fieldPassword;
private String fieldExpired;
private String fieldDisabled;
private List principalAttributeList = new ArrayList();
@NestedConfigurationProperty
private PrincipalTransformationProperties principalTransformation =
new PrincipalTransformationProperties();
@NestedConfigurationProperty
private PasswordEncoderProperties passwordEncoder = new PasswordEncoderProperties();
private String name;
private int order = Integer.MAX_VALUE;
public List getPrincipalAttributeList() {
return principalAttributeList;
}
public void setPrincipalAttributeList(final List principalAttributeList) {
this.principalAttributeList = principalAttributeList;
}
public int getOrder() {
return order;
}
public void setOrder(final int order) {
this.order = order;
}
public String getName() {
return name;
}
public void setName(final String name) {
this.name = name;
}
public PasswordEncoderProperties getPasswordEncoder() {
return passwordEncoder;
}
public void setPasswordEncoder(final PasswordEncoderProperties passwordEncoder) {
this.passwordEncoder = passwordEncoder;
}
public String getSql() {
return sql;
}
public void setSql(final String sql) {
this.sql = StringUtils.replace(sql, "{user}", "?");
}
public PrincipalTransformationProperties getPrincipalTransformation() {
return principalTransformation;
}
public void setPrincipalTransformation(final PrincipalTransformationProperties principalTransformation) {
this.principalTransformation = principalTransformation;
}
public String getCredentialCriteria() {
return credentialCriteria;
}
public void setCredentialCriteria(final String credentialCriteria) {
this.credentialCriteria = credentialCriteria;
}
public String getFieldPassword() {
return fieldPassword;
}
public void setFieldPassword(final String fieldPassword) {
this.fieldPassword = fieldPassword;
}
public String getFieldExpired() {
return fieldExpired;
}
public void setFieldExpired(final String fieldExpired) {
this.fieldExpired = fieldExpired;
}
public String getFieldDisabled() {
return fieldDisabled;
}
public void setFieldDisabled(final String fieldDisabled) {
this.fieldDisabled = fieldDisabled;
}
}
public static class Bind extends AbstractJpaProperties {
private String credentialCriteria;
@NestedConfigurationProperty
private PasswordEncoderProperties passwordEncoder = new PasswordEncoderProperties();
@NestedConfigurationProperty
private PrincipalTransformationProperties principalTransformation = new PrincipalTransformationProperties();
private String name;
private Integer order;
public Integer getOrder() {
return order;
}
public void setOrder(final Integer order) {
this.order = order;
}
public String getName() {
return name;
}
public void setName(final String name) {
this.name = name;
}
public PasswordEncoderProperties getPasswordEncoder() {
return passwordEncoder;
}
public void setPasswordEncoder(final PasswordEncoderProperties passwordEncoder) {
this.passwordEncoder = passwordEncoder;
}
public PrincipalTransformationProperties getPrincipalTransformation() {
return principalTransformation;
}
public void setPrincipalTransformation(final PrincipalTransformationProperties principalTransformation) {
this.principalTransformation = principalTransformation;
}
public String getCredentialCriteria() {
return credentialCriteria;
}
public void setCredentialCriteria(final String credentialCriteria) {
this.credentialCriteria = credentialCriteria;
}
}
public static class Search extends AbstractJpaProperties {
private String fieldUser;
private String fieldPassword;
private String tableUsers;
private String credentialCriteria;
@NestedConfigurationProperty
private PrincipalTransformationProperties principalTransformation =
new PrincipalTransformationProperties();
@NestedConfigurationProperty
private PasswordEncoderProperties passwordEncoder = new PasswordEncoderProperties();
private String name;
private int order = Integer.MAX_VALUE;
public int getOrder() {
return order;
}
public void setOrder(final int order) {
this.order = order;
}
public String getName() {
return name;
}
public void setName(final String name) {
this.name = name;
}
public PasswordEncoderProperties getPasswordEncoder() {
return passwordEncoder;
}
public void setPasswordEncoder(final PasswordEncoderProperties passwordEncoder) {
this.passwordEncoder = passwordEncoder;
}
public String getFieldUser() {
return fieldUser;
}
public void setFieldUser(final String fieldUser) {
this.fieldUser = fieldUser;
}
public String getFieldPassword() {
return fieldPassword;
}
public void setFieldPassword(final String fieldPassword) {
this.fieldPassword = fieldPassword;
}
public String getTableUsers() {
return tableUsers;
}
public void setTableUsers(final String tableUsers) {
this.tableUsers = tableUsers;
}
public PrincipalTransformationProperties getPrincipalTransformation() {
return principalTransformation;
}
public void setPrincipalTransformation(final PrincipalTransformationProperties principalTransformation) {
this.principalTransformation = principalTransformation;
}
public String getCredentialCriteria() {
return credentialCriteria;
}
public void setCredentialCriteria(final String credentialCriteria) {
this.credentialCriteria = credentialCriteria;
}
}
public static class Encode extends AbstractJpaProperties {
private String credentialCriteria;
private String algorithmName;
private String sql;
private String passwordFieldName = "password";
private String saltFieldName = "salt";
private String expiredFieldName;
private String disabledFieldName;
private String numberOfIterationsFieldName = "numIterations";
private long numberOfIterations;
private String staticSalt;
private String name;
@NestedConfigurationProperty
private PrincipalTransformationProperties principalTransformation =
new PrincipalTransformationProperties();
@NestedConfigurationProperty
private PasswordEncoderProperties passwordEncoder = new PasswordEncoderProperties();
private int order = Integer.MAX_VALUE;
public int getOrder() {
return order;
}
public void setOrder(final int order) {
this.order = order;
}
public String getName() {
return name;
}
public void setName(final String name) {
this.name = name;
}
public PasswordEncoderProperties getPasswordEncoder() {
return passwordEncoder;
}
public void setPasswordEncoder(final PasswordEncoderProperties passwordEncoder) {
this.passwordEncoder = passwordEncoder;
}
public String getAlgorithmName() {
return algorithmName;
}
public void setAlgorithmName(final String algorithmName) {
this.algorithmName = algorithmName;
}
public String getSql() {
return sql;
}
public void setSql(final String sql) {
this.sql = sql;
}
public String getPasswordFieldName() {
return passwordFieldName;
}
public void setPasswordFieldName(final String passwordFieldName) {
this.passwordFieldName = passwordFieldName;
}
public String getSaltFieldName() {
return saltFieldName;
}
public void setSaltFieldName(final String saltFieldName) {
this.saltFieldName = saltFieldName;
}
public String getExpiredFieldName() {
return expiredFieldName;
}
public void setExpiredFieldName(final String expiredFieldName) {
this.expiredFieldName = expiredFieldName;
}
public String getDisabledFieldName() {
return disabledFieldName;
}
public void setDisabledFieldName(final String disabledFieldName) {
this.disabledFieldName = disabledFieldName;
}
public String getNumberOfIterationsFieldName() {
return numberOfIterationsFieldName;
}
public void setNumberOfIterationsFieldName(final String numberOfIterationsFieldName) {
this.numberOfIterationsFieldName = numberOfIterationsFieldName;
}
public long getNumberOfIterations() {
return numberOfIterations;
}
public void setNumberOfIterations(final long numberOfIterations) {
this.numberOfIterations = numberOfIterations;
}
public String getStaticSalt() {
return staticSalt;
}
public void setStaticSalt(final String staticSalt) {
this.staticSalt = staticSalt;
}
public PrincipalTransformationProperties getPrincipalTransformation() {
return principalTransformation;
}
public void setPrincipalTransformation(final PrincipalTransformationProperties principalTransformation) {
this.principalTransformation = principalTransformation;
}
public String getCredentialCriteria() {
return credentialCriteria;
}
public void setCredentialCriteria(final String credentialCriteria) {
this.credentialCriteria = credentialCriteria;
}
}
}