package com.constellio.model.conf.ldap.config;
import java.util.ArrayList;
import java.util.List;
import org.joda.time.Duration;
import com.constellio.model.conf.ldap.RegexFilter;
import com.constellio.model.services.security.authentification.LDAPAuthenticationService;
public class LDAPUserSyncConfiguration {
public static final String TIME_PATTERN = "HH:mm";
transient RegexFilter userFilter;
transient RegexFilter groupFilter;
Duration durationBetweenExecution;
private List<String> scheduleTime;
private List<String> selectedCollectionsCodes;
AzureADUserSynchConfig azurUserSynchConfig = new AzureADUserSynchConfig();
NonAzureADUserSynchConfig nonAzureADUserSynchConfig = new NonAzureADUserSynchConfig();
boolean membershipAutomaticDerivationActivated = true;
public LDAPUserSyncConfiguration(String user, String password,
RegexFilter userFilter, RegexFilter groupFilter, Duration durationBetweenExecution, List<String> scheduleTime,
List<String> groupBaseContextList, List<String> usersWithoutGroupsBaseContextList, List<String> userFilterGroupsList, boolean membershipAutomaticDerivationActivated) {
this(user, password, userFilter, groupFilter, durationBetweenExecution, scheduleTime, groupBaseContextList,
usersWithoutGroupsBaseContextList, userFilterGroupsList, membershipAutomaticDerivationActivated, new ArrayList<String>());
}
public LDAPUserSyncConfiguration(String user, String password,
RegexFilter userFilter, RegexFilter groupFilter, Duration durationBetweenExecution, List<String> scheduleTime,
List<String> groupBaseContextList, List<String> usersWithoutGroupsBaseContextList, List<String> userFilterGroupsList, boolean membershipAutomaticDerivationActivated,
List<String> selectedCollectionsCodes) {
this.nonAzureADUserSynchConfig.user = user;
this.nonAzureADUserSynchConfig.password = password;
this.userFilter = userFilter;
this.groupFilter = groupFilter;
this.durationBetweenExecution = durationBetweenExecution;
this.scheduleTime = scheduleTime;
this.nonAzureADUserSynchConfig.groupBaseContextList = groupBaseContextList;
this.nonAzureADUserSynchConfig.usersWithoutGroupsBaseContextList = usersWithoutGroupsBaseContextList;
this.selectedCollectionsCodes = selectedCollectionsCodes;
this.nonAzureADUserSynchConfig.userFilterGroupsList = userFilterGroupsList;
this.membershipAutomaticDerivationActivated = membershipAutomaticDerivationActivated;
}
public LDAPUserSyncConfiguration(AzureADUserSynchConfig azurUserSynchConfig,
RegexFilter userFilter, RegexFilter groupFilter, Duration durationBetweenExecution,
List<String> selectedCollectionsCodes) {
this.azurUserSynchConfig.applicationKey = azurUserSynchConfig.applicationKey;
this.azurUserSynchConfig.setClientId(azurUserSynchConfig.getClientId());
this.azurUserSynchConfig.setGroupsFilter(azurUserSynchConfig.getGroupsFilter());
this.azurUserSynchConfig.setUsersFilter(azurUserSynchConfig.getUsersFilter());
this.azurUserSynchConfig.setUserGroups(azurUserSynchConfig.getUserGroups());
this.userFilter = userFilter;
this.groupFilter = groupFilter;
this.durationBetweenExecution = durationBetweenExecution;
this.selectedCollectionsCodes = selectedCollectionsCodes;
}
public String getUser() {
return nonAzureADUserSynchConfig.user;
}
public String getPassword() {
return nonAzureADUserSynchConfig.password;
}
public boolean isUserAccepted(String userName) {
if (userName == null) {
return false;
}
if (userName.equals(LDAPAuthenticationService.ADMIN_USERNAME)) {
return false;
}
if (this.userFilter == null) {
return true;
}
return this.userFilter.isAccepted(userName);
}
public boolean isGroupAccepted(String groupName) {
if (groupName == null) {
return false;
}
if (this.groupFilter == null) {
return true;
}
return this.groupFilter.isAccepted(groupName);
}
public Duration getDurationBetweenExecution() {
return durationBetweenExecution;
}
public void setDurationBetweenExecution(Duration durationBetweenExecution) {
this.durationBetweenExecution = durationBetweenExecution;
}
public List<String> getScheduleTime() {
return scheduleTime;
}
public void setScheduleTime(List<String> scheduleTime) {
this.scheduleTime = scheduleTime;
}
public List<String> getGroupBaseContextList() {
return nonAzureADUserSynchConfig.groupBaseContextList;
}
public List<String> getUsersWithoutGroupsBaseContextList() {
return nonAzureADUserSynchConfig.usersWithoutGroupsBaseContextList;
}
public String getUsersFilterAcceptanceRegex() {
if (this.userFilter == null) {
return "";
}
return this.userFilter.getAcceptedRegex();
}
public String getUsersFilterRejectionRegex() {
if (this.userFilter == null) {
return "";
}
return this.userFilter.getRejectedRegex();
}
public String getGroupsFilterAcceptanceRegex() {
if (this.groupFilter == null) {
return "";
}
return this.groupFilter.getAcceptedRegex();
}
public String getGroupsFilterRejectionRegex() {
if (this.groupFilter == null) {
return "";
}
return this.groupFilter.getRejectedRegex();
}
public RegexFilter getUserFilter() {
return userFilter;
}
public RegexFilter getGroupFilter() {
return groupFilter;
}
public List<String> getSelectedCollectionsCodes() {
return selectedCollectionsCodes;
}
public String getClientSecret(){
return this.azurUserSynchConfig.getApplicationKey();
}
public String getClientId() {
return this.azurUserSynchConfig.getClientId();
}
public String getGroupsFilter() {
return this.azurUserSynchConfig.getGroupsFilter();
}
public String getUsersFilter() {
return this.azurUserSynchConfig.getUsersFilter();
}
public boolean isMembershipAutomaticDerivationActivated() {
return membershipAutomaticDerivationActivated;
}
public List<String> getUserGroups() {
return this.azurUserSynchConfig.getUserGroups();
}
public List<String> getUserFilterGroupsList() {
return nonAzureADUserSynchConfig.userFilterGroupsList;
}
}