package org.nightlabs.jfire.auth.ui.ldap.wizard; import org.nightlabs.base.ui.wizard.WizardHop; import org.nightlabs.jfire.auth.ui.wizard.CreateUserManagementSystemWizard; import org.nightlabs.jfire.auth.ui.wizard.IUserManagementSystemBuilderHop; import org.nightlabs.jfire.base.security.integration.ldap.LDAPScriptSet; import org.nightlabs.jfire.base.security.integration.ldap.LDAPServer; import org.nightlabs.jfire.base.security.integration.ldap.connection.ILDAPConnectionParamsProvider; import org.nightlabs.jfire.base.security.integration.ldap.connection.ILDAPConnectionParamsProvider.AuthenticationMethod; import org.nightlabs.jfire.base.security.integration.ldap.connection.ILDAPConnectionParamsProvider.EncryptionMethod; import org.nightlabs.jfire.security.integration.UserManagementSystem; import org.nightlabs.jfire.security.integration.UserManagementSystemType; /** * Implementation if {@link IUserManagementSystemBuilderHop} for creating {@link LDAPServer} instances. * Contributes two pages to {@link CreateUserManagementSystemWizard} with general {@link LDAPServer} * properties configuration (host, port, name, description, active state, encryption and authentication methods) * and advanced configuration (leading state, synchronization properties, base entry name). * * @author Denis Dudnik <deniska.dudnik[at]gmail{dot}com> * */ public class CreateLDAPServerWizardHop extends WizardHop implements IUserManagementSystemBuilderHop{ private LDAPServerGeneralConfigWizardPage generalConfigPage; private LDAPServerAdvancedConfigWizardPage advancedConfigPage; /** * Default constructor */ public CreateLDAPServerWizardHop() { generalConfigPage = new LDAPServerGeneralConfigWizardPage(); advancedConfigPage = new LDAPServerAdvancedConfigWizardPage(); setEntryPage(generalConfigPage); addHopPage(advancedConfigPage); } /** * {@inheritDoc} */ @Override public UserManagementSystem buildUserManagementSystem(UserManagementSystemType<?> userManagementSystemType) { LDAPServer ldapServer = (LDAPServer) userManagementSystemType.createUserManagementSystem(); ldapServer.setName(generalConfigPage.getLDAPName()); ldapServer.setDescription(generalConfigPage.getLDAPDescription()); ldapServer.setHost(generalConfigPage.getHost()); ldapServer.setPort(generalConfigPage.getPort()); ldapServer.setEncryptionMethod(generalConfigPage.getEncryptionMethod()); ldapServer.setAuthenticationMethod(generalConfigPage.getAuthenticationMethod()); ldapServer.setActive(generalConfigPage.getActiveState()); ldapServer.setSyncDN(advancedConfigPage.getSyncDN()); ldapServer.setSyncPassword(advancedConfigPage.getSyncPassword()); ldapServer.setLeading(advancedConfigPage.getLeadingState()); ldapServer.setBaseDN(LDAPScriptSet.BASE_USER_ENTRY_NAME_PLACEHOLDER, advancedConfigPage.getBaseEntryDN(LDAPScriptSet.BASE_USER_ENTRY_NAME_PLACEHOLDER)); ldapServer.setBaseDN(LDAPScriptSet.BASE_GROUP_ENTRY_NAME_PLACEHOLDER, advancedConfigPage.getBaseEntryDN(LDAPScriptSet.BASE_GROUP_ENTRY_NAME_PLACEHOLDER)); ldapServer.setAttributeSyncPolicy(advancedConfigPage.getAttributeSyncPolicy()); return ldapServer; } /** * Constructs {@link ILDAPConnectionParamsProvider} with data that was specified on {@link LDAPServerGeneralConfigWizardPage}. * Made protected for package access. * * @return counstructed {@link ILDAPConnectionParamsProvider} */ protected ILDAPConnectionParamsProvider getLDAPConnectionParamsProvider(){ if (!generalConfigPage.isPageComplete()){ return null; } // create local variables to prevent possible invalid thread access later final AuthenticationMethod authenticationMethod = generalConfigPage.getAuthenticationMethod(); final EncryptionMethod encryptionMethod = generalConfigPage.getEncryptionMethod(); final String host = generalConfigPage.getHost(); final int port = generalConfigPage.getPort(); return new ILDAPConnectionParamsProvider(){ @Override public AuthenticationMethod getAuthenticationMethod() { return authenticationMethod; } @Override public EncryptionMethod getEncryptionMethod() { return encryptionMethod; } @Override public String getHost() { return host; } @Override public int getPort() { return port; } @Override public String getSASLRealm(String bindPrincipal) { // TODO return null; } }; } }