mirror of
https://github.com/apache/archiva.git
synced 2025-02-22 18:31:43 +00:00
[MRM-1718] ldap configuration editable with the ui.
WORK IN PROGRESS ! git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1417093 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
d354911bba
commit
19e9ca8bb5
@ -26,7 +26,7 @@
|
||||
* @author Olivier Lamy
|
||||
* @since 1.4-M4
|
||||
*/
|
||||
@XmlRootElement ( name = "archivaLdapConfiguration" )
|
||||
@XmlRootElement( name = "archivaLdapConfiguration" )
|
||||
public class ArchivaLdapConfiguration
|
||||
{
|
||||
|
||||
@ -39,7 +39,7 @@ public class ArchivaLdapConfiguration
|
||||
/**
|
||||
* The LDAP port.
|
||||
*/
|
||||
private String port;
|
||||
private int port;
|
||||
|
||||
/**
|
||||
* ssl LDAP connection.
|
||||
@ -71,6 +71,11 @@ public class ArchivaLdapConfiguration
|
||||
*/
|
||||
private String authenticationMethod;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private boolean bindAuthenticatorEnabled;
|
||||
|
||||
/**
|
||||
* Field extraProperties.
|
||||
*/
|
||||
@ -91,12 +96,12 @@ public void setHostName( String hostName )
|
||||
this.hostName = hostName;
|
||||
}
|
||||
|
||||
public String getPort()
|
||||
public int getPort()
|
||||
{
|
||||
return port;
|
||||
}
|
||||
|
||||
public void setPort( String port )
|
||||
public void setPort( int port )
|
||||
{
|
||||
this.port = port;
|
||||
}
|
||||
@ -170,4 +175,14 @@ public void setExtraProperties( Map<String, String> extraProperties )
|
||||
{
|
||||
this.extraProperties = extraProperties;
|
||||
}
|
||||
|
||||
public boolean isBindAuthenticatorEnabled()
|
||||
{
|
||||
return bindAuthenticatorEnabled;
|
||||
}
|
||||
|
||||
public void setBindAuthenticatorEnabled( boolean bindAuthenticatorEnabled )
|
||||
{
|
||||
this.bindAuthenticatorEnabled = bindAuthenticatorEnabled;
|
||||
}
|
||||
}
|
||||
|
@ -25,7 +25,7 @@
|
||||
* @author Olivier Lamy
|
||||
* @since 1.4-M4
|
||||
*/
|
||||
@XmlRootElement (name = "archivaRuntimeConfiguration")
|
||||
@XmlRootElement(name = "archivaRuntimeConfiguration")
|
||||
public class ArchivaRuntimeConfiguration
|
||||
implements Serializable
|
||||
{
|
||||
@ -33,6 +33,11 @@ public class ArchivaRuntimeConfiguration
|
||||
|
||||
private ArchivaLdapConfiguration archivaLdapConfiguration;
|
||||
|
||||
/**
|
||||
* flag to know if redback configuration has been checked/migrated.
|
||||
*/
|
||||
private boolean migratedFromRedbackConfiguration = false;
|
||||
|
||||
public ArchivaRuntimeConfiguration()
|
||||
{
|
||||
// no op
|
||||
@ -57,4 +62,24 @@ public void setArchivaLdapConfiguration( ArchivaLdapConfiguration archivaLdapCon
|
||||
{
|
||||
this.archivaLdapConfiguration = archivaLdapConfiguration;
|
||||
}
|
||||
|
||||
public boolean isMigratedFromRedbackConfiguration()
|
||||
{
|
||||
return migratedFromRedbackConfiguration;
|
||||
}
|
||||
|
||||
public void setMigratedFromRedbackConfiguration( boolean migratedFromRedbackConfiguration )
|
||||
{
|
||||
this.migratedFromRedbackConfiguration = migratedFromRedbackConfiguration;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "ArchivaRuntimeConfiguration{" +
|
||||
"userManagerImpl='" + userManagerImpl + '\'' +
|
||||
", archivaLdapConfiguration=" + archivaLdapConfiguration +
|
||||
", migratedFromRedbackConfiguration=" + migratedFromRedbackConfiguration +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
@ -27,7 +27,7 @@
|
||||
*/
|
||||
public interface ArchivaRuntimeConfigurationAdmin
|
||||
{
|
||||
ArchivaRuntimeConfiguration getArchivaRuntimeConfigurationAdmin()
|
||||
ArchivaRuntimeConfiguration getArchivaRuntimeConfiguration()
|
||||
throws RepositoryAdminException;
|
||||
|
||||
void updateArchivaRuntimeConfiguration( ArchivaRuntimeConfiguration archivaRuntimeConfiguration )
|
||||
|
@ -18,7 +18,9 @@
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
import net.sf.beanlib.provider.replicator.BeanReplicator;
|
||||
import org.apache.archiva.admin.model.RepositoryAdminException;
|
||||
import org.apache.archiva.admin.model.beans.ArchivaLdapConfiguration;
|
||||
import org.apache.archiva.admin.model.beans.ArchivaRuntimeConfiguration;
|
||||
import org.apache.archiva.admin.model.runtime.ArchivaRuntimeConfigurationAdmin;
|
||||
import org.apache.archiva.admin.repository.AbstractRepositoryAdmin;
|
||||
@ -26,20 +28,72 @@
|
||||
import org.apache.archiva.configuration.IndeterminateConfigurationException;
|
||||
import org.apache.archiva.configuration.RuntimeConfiguration;
|
||||
import org.apache.archiva.redback.components.registry.RegistryException;
|
||||
import org.apache.archiva.redback.configuration.UserConfiguration;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
|
||||
/**
|
||||
* @author Olivier Lamy
|
||||
* @since 1.4-M4
|
||||
*/
|
||||
@Service ( "archivaRuntimeConfigurationAdmin#default" )
|
||||
@Service( "archivaRuntimeConfigurationAdmin#default" )
|
||||
public class DefaultArchivaRuntimeConfigurationAdmin
|
||||
extends AbstractRepositoryAdmin
|
||||
implements ArchivaRuntimeConfigurationAdmin
|
||||
{
|
||||
|
||||
@Inject
|
||||
@Named( value = "userConfiguration" )
|
||||
UserConfiguration userConfiguration;
|
||||
|
||||
public ArchivaRuntimeConfiguration getArchivaRuntimeConfigurationAdmin()
|
||||
@PostConstruct
|
||||
public void initialize()
|
||||
throws RepositoryAdminException
|
||||
{
|
||||
ArchivaRuntimeConfiguration archivaRuntimeConfiguration = getArchivaRuntimeConfiguration();
|
||||
// migrate or not data from redback
|
||||
if ( !archivaRuntimeConfiguration.isMigratedFromRedbackConfiguration() )
|
||||
{
|
||||
// so migrate if available
|
||||
String userManagerImpl = userConfiguration.getString( "user.manager.impl" );
|
||||
if ( StringUtils.isNotEmpty( userManagerImpl ) )
|
||||
{
|
||||
archivaRuntimeConfiguration.setUserManagerImpl( userManagerImpl );
|
||||
}
|
||||
|
||||
// now ldap
|
||||
|
||||
ArchivaLdapConfiguration archivaLdapConfiguration =
|
||||
archivaRuntimeConfiguration.getArchivaLdapConfiguration();
|
||||
if ( archivaLdapConfiguration == null )
|
||||
{
|
||||
archivaLdapConfiguration = new ArchivaLdapConfiguration();
|
||||
archivaRuntimeConfiguration.setArchivaLdapConfiguration( archivaLdapConfiguration );
|
||||
}
|
||||
|
||||
archivaLdapConfiguration.setHostName( userConfiguration.getString( "ldap.config.hostname", null ) );
|
||||
archivaLdapConfiguration.setPort( userConfiguration.getInt( "ldap.config.port", -1 ) );
|
||||
archivaLdapConfiguration.setSsl( userConfiguration.getBoolean( "ldap.config.ssl", false ) );
|
||||
archivaLdapConfiguration.setBaseDn( userConfiguration.getConcatenatedList( "ldap.config.base.dn", null ) );
|
||||
archivaLdapConfiguration.setContextFactory(
|
||||
userConfiguration.getString( "ldap.config.context.factory", null ) );
|
||||
archivaLdapConfiguration.setBindDn( userConfiguration.getConcatenatedList( "ldap.config.bind.dn", null ) );
|
||||
archivaLdapConfiguration.setPassword( userConfiguration.getString( "ldap.config.password", null ) );
|
||||
archivaLdapConfiguration.setAuthenticationMethod(
|
||||
userConfiguration.getString( "ldap.config.authentication.method", null ) );
|
||||
|
||||
archivaRuntimeConfiguration.setMigratedFromRedbackConfiguration( true );
|
||||
|
||||
updateArchivaRuntimeConfiguration( archivaRuntimeConfiguration );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public ArchivaRuntimeConfiguration getArchivaRuntimeConfiguration()
|
||||
throws RepositoryAdminException
|
||||
{
|
||||
return build( getArchivaConfiguration().getConfiguration().getRuntimeConfiguration() );
|
||||
@ -67,15 +121,11 @@ public void updateArchivaRuntimeConfiguration( ArchivaRuntimeConfiguration archi
|
||||
|
||||
private ArchivaRuntimeConfiguration build( RuntimeConfiguration runtimeConfiguration )
|
||||
{
|
||||
ArchivaRuntimeConfiguration archivaRuntimeConfiguration = new ArchivaRuntimeConfiguration();
|
||||
archivaRuntimeConfiguration.setUserManagerImpl( runtimeConfiguration.getUserManagerImpl() );
|
||||
return archivaRuntimeConfiguration;
|
||||
return new BeanReplicator().replicateBean( runtimeConfiguration, ArchivaRuntimeConfiguration.class );
|
||||
}
|
||||
|
||||
private RuntimeConfiguration build( ArchivaRuntimeConfiguration archivaRuntimeConfiguration )
|
||||
{
|
||||
RuntimeConfiguration runtimeConfiguration = new RuntimeConfiguration();
|
||||
runtimeConfiguration.setUserManagerImpl( archivaRuntimeConfiguration.getUserManagerImpl() );
|
||||
return runtimeConfiguration;
|
||||
return new BeanReplicator().replicateBean( archivaRuntimeConfiguration, RuntimeConfiguration.class );
|
||||
}
|
||||
}
|
||||
|
@ -60,7 +60,7 @@ public ArchivaRuntimeConfiguration getArchivaRuntimeConfigurationAdmin()
|
||||
{
|
||||
try
|
||||
{
|
||||
return archivaRuntimeConfigurationAdmin.getArchivaRuntimeConfigurationAdmin();
|
||||
return archivaRuntimeConfigurationAdmin.getArchivaRuntimeConfiguration();
|
||||
}
|
||||
catch ( RepositoryAdminException e )
|
||||
{
|
||||
@ -75,7 +75,7 @@ public Boolean updateArchivaRuntimeConfiguration( ArchivaRuntimeConfiguration ar
|
||||
{
|
||||
// has user manager impl changed ?
|
||||
boolean userManagerChanged = !StringUtils.equals( archivaRuntimeConfiguration.getUserManagerImpl(),
|
||||
archivaRuntimeConfigurationAdmin.getArchivaRuntimeConfigurationAdmin().getUserManagerImpl() );
|
||||
archivaRuntimeConfigurationAdmin.getArchivaRuntimeConfiguration().getUserManagerImpl() );
|
||||
archivaRuntimeConfigurationAdmin.updateArchivaRuntimeConfiguration( archivaRuntimeConfiguration );
|
||||
|
||||
if ( userManagerChanged )
|
||||
|
@ -48,7 +48,7 @@ public void initialize()
|
||||
try
|
||||
{
|
||||
String userManagerImplStr =
|
||||
archivaRuntimeConfigurationAdmin.getArchivaRuntimeConfigurationAdmin().getUserManagerImpl();
|
||||
archivaRuntimeConfigurationAdmin.getArchivaRuntimeConfiguration().getUserManagerImpl();
|
||||
log.info( "use userManagerImpl: '{}'", userManagerImplStr );
|
||||
UserManager userManagerImpl =
|
||||
applicationContext.getBean( "userManager#" + userManagerImplStr, UserManager.class );
|
||||
|
@ -253,12 +253,13 @@ require(["jquery","jquery.tmpl","i18n","knockout"], function(jquery,jqueryTmpl,i
|
||||
$.log("displayRedbackError with array");
|
||||
for(var i=0; i<obj.errorMessages.length; i++ ) {
|
||||
if(obj.errorMessages[i].errorKey) {
|
||||
$.log("displayRedbackError with array loop");
|
||||
displayErrorMessage($.i18n.prop( obj.errorMessages[i].errorKey, obj.errorMessages[i].args ),idToAppend);
|
||||
}
|
||||
if(obj.errorMessages[i].message) {
|
||||
displayErrorMessage(obj.errorMessages[i].message,idToAppend);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$.log("displayRedbackError no array");
|
||||
displayErrorMessage($.i18n.prop( obj.errorMessages.errorKey, obj.errorMessages.args ),idToAppend);
|
||||
}
|
||||
}
|
||||
@ -301,7 +302,9 @@ require(["jquery","jquery.tmpl","i18n","knockout"], function(jquery,jqueryTmpl,i
|
||||
displayErrorMessage($.i18n.prop( data.errorKey ),idToAppend);
|
||||
} else if (data.errorMessages){
|
||||
$.each(data.errorMessages, function(index, value) {
|
||||
displayErrorMessage( $.i18n.prop(data.errorMessages[index].errorKey,data.errorMessages[index].args?data.errorMessages[index].args:null),idToAppend);
|
||||
if(data.errorMessages[index].errorKey) {
|
||||
displayErrorMessage( $.i18n.prop(data.errorMessages[index].errorKey,data.errorMessages[index].args?data.errorMessages[index].args:null),idToAppend);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
$.log("print data.errorMessage:"+data.errorMessage);
|
||||
@ -396,6 +399,13 @@ require(["jquery","jquery.tmpl","i18n","knockout"], function(jquery,jqueryTmpl,i
|
||||
// utils javascript string extensions
|
||||
//------------------------------------
|
||||
|
||||
String.prototype.isEmpty = function(str) {
|
||||
return ($.trim(this ).length < 1);
|
||||
}
|
||||
String.prototype.isNotEmpty = function(str) {
|
||||
return ($.trim(this ).length > 0);
|
||||
}
|
||||
|
||||
String.prototype.endsWith = function(str) {
|
||||
return (this.match(str+"$")==str)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user