mirror of https://github.com/apache/archiva.git
service to provide available rbacmanager implementations informations
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1447164 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
8a34bce31c
commit
8364c17d3a
|
@ -44,50 +44,60 @@ public class TestRBACManager implements RBACManager
|
|||
|
||||
public void initialize()
|
||||
{
|
||||
//To change body of implemented methods use File | Settings | File Templates.
|
||||
|
||||
}
|
||||
|
||||
public boolean isFinalImplementation()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public String getDescriptionKey()
|
||||
{
|
||||
return "archiva.redback.rbacmanager.test";
|
||||
}
|
||||
|
||||
public void addListener( RBACManagerListener listener )
|
||||
{
|
||||
//To change body of implemented methods use File | Settings | File Templates.
|
||||
|
||||
}
|
||||
|
||||
public void removeListener( RBACManagerListener listener )
|
||||
{
|
||||
//To change body of implemented methods use File | Settings | File Templates.
|
||||
|
||||
}
|
||||
|
||||
public Role createRole( String name )
|
||||
{
|
||||
return null; //To change body of implemented methods use File | Settings | File Templates.
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean roleExists( String name )
|
||||
{
|
||||
return false; //To change body of implemented methods use File | Settings | File Templates.
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean roleExists( Role role )
|
||||
{
|
||||
return false; //To change body of implemented methods use File | Settings | File Templates.
|
||||
return false;
|
||||
}
|
||||
|
||||
public Role saveRole( Role role )
|
||||
throws RbacObjectInvalidException, RbacManagerException
|
||||
{
|
||||
return null; //To change body of implemented methods use File | Settings | File Templates.
|
||||
return null;
|
||||
}
|
||||
|
||||
public void saveRoles( Collection<Role> roles )
|
||||
throws RbacObjectInvalidException, RbacManagerException
|
||||
{
|
||||
//To change body of implemented methods use File | Settings | File Templates.
|
||||
|
||||
}
|
||||
|
||||
public Role getRole( String roleName )
|
||||
throws RbacObjectNotFoundException, RbacManagerException
|
||||
{
|
||||
return null; //To change body of implemented methods use File | Settings | File Templates.
|
||||
return null;
|
||||
}
|
||||
|
||||
public Map<String, Role> getRoles( Collection<String> roleNames )
|
||||
|
|
|
@ -27,13 +27,9 @@ import java.io.Serializable;
|
|||
*/
|
||||
@XmlRootElement(name = "userManagerImplementationInformation")
|
||||
public class UserManagerImplementationInformation
|
||||
extends AbstractImplementationInformation
|
||||
implements Serializable
|
||||
{
|
||||
private String beanId;
|
||||
|
||||
private String descriptionKey;
|
||||
|
||||
private boolean readOnly;
|
||||
|
||||
public UserManagerImplementationInformation()
|
||||
{
|
||||
|
@ -42,77 +38,7 @@ public class UserManagerImplementationInformation
|
|||
|
||||
public UserManagerImplementationInformation( String beanId, String descriptionKey, boolean readOnly )
|
||||
{
|
||||
this.beanId = beanId;
|
||||
this.descriptionKey = descriptionKey;
|
||||
this.readOnly = readOnly;
|
||||
super( beanId, descriptionKey, readOnly );
|
||||
}
|
||||
|
||||
public String getBeanId()
|
||||
{
|
||||
return beanId;
|
||||
}
|
||||
|
||||
public void setBeanId( String beanId )
|
||||
{
|
||||
this.beanId = beanId;
|
||||
}
|
||||
|
||||
public String getDescriptionKey()
|
||||
{
|
||||
return descriptionKey;
|
||||
}
|
||||
|
||||
public void setDescriptionKey( String descriptionKey )
|
||||
{
|
||||
this.descriptionKey = descriptionKey;
|
||||
}
|
||||
|
||||
public boolean isReadOnly()
|
||||
{
|
||||
return readOnly;
|
||||
}
|
||||
|
||||
public void setReadOnly( boolean readOnly )
|
||||
{
|
||||
this.readOnly = readOnly;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
sb.append( "UserManagerImplementationInformation" );
|
||||
sb.append( "{beanId='" ).append( beanId ).append( '\'' );
|
||||
sb.append( ", descriptionKey='" ).append( descriptionKey ).append( '\'' );
|
||||
sb.append( '}' );
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals( Object o )
|
||||
{
|
||||
if ( this == o )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if ( !( o instanceof UserManagerImplementationInformation ) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
UserManagerImplementationInformation that = (UserManagerImplementationInformation) o;
|
||||
|
||||
if ( !beanId.equals( that.beanId ) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
return beanId.hashCode();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ package org.apache.archiva.rest.api.services;
|
|||
import org.apache.archiva.admin.model.beans.RedbackRuntimeConfiguration;
|
||||
import org.apache.archiva.admin.model.beans.LdapConfiguration;
|
||||
import org.apache.archiva.redback.authorization.RedbackAuthorization;
|
||||
import org.apache.archiva.rest.api.model.RBACManagerImplementationInformation;
|
||||
import org.apache.archiva.rest.api.model.UserManagerImplementationInformation;
|
||||
import org.apache.archiva.security.common.ArchivaRoleConstants;
|
||||
|
||||
|
@ -55,13 +56,20 @@ public interface RedbackRuntimeConfigurationService
|
|||
Boolean updateRedbackRuntimeConfiguration( RedbackRuntimeConfiguration redbackRuntimeConfiguration )
|
||||
throws ArchivaRestServiceException;
|
||||
|
||||
@Path("userManagerImplementationInformation")
|
||||
@Path("userManagerImplementationInformations")
|
||||
@GET
|
||||
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
|
||||
@RedbackAuthorization(permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION)
|
||||
List<UserManagerImplementationInformation> getUserManagerImplementationInformations()
|
||||
throws ArchivaRestServiceException;
|
||||
|
||||
@Path("rbacManagerImplementationInformations")
|
||||
@GET
|
||||
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
|
||||
@RedbackAuthorization(permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION)
|
||||
List<RBACManagerImplementationInformation> getRbacManagerImplementationInformations()
|
||||
throws ArchivaRestServiceException;
|
||||
|
||||
|
||||
@Path( "checkLdapConnection" )
|
||||
@GET
|
||||
|
|
|
@ -33,7 +33,9 @@ import org.apache.archiva.redback.common.ldap.connection.LdapException;
|
|||
import org.apache.archiva.redback.components.cache.Cache;
|
||||
import org.apache.archiva.redback.policy.CookieSettings;
|
||||
import org.apache.archiva.redback.policy.PasswordRule;
|
||||
import org.apache.archiva.redback.rbac.RBACManager;
|
||||
import org.apache.archiva.redback.users.UserManager;
|
||||
import org.apache.archiva.rest.api.model.RBACManagerImplementationInformation;
|
||||
import org.apache.archiva.rest.api.model.UserManagerImplementationInformation;
|
||||
import org.apache.archiva.rest.api.services.ArchivaRestServiceException;
|
||||
import org.apache.archiva.rest.api.services.RedbackRuntimeConfigurationService;
|
||||
|
@ -199,6 +201,34 @@ public class DefaultRedbackRuntimeConfigurationService
|
|||
return informations;
|
||||
}
|
||||
|
||||
public List<RBACManagerImplementationInformation> getRbacManagerImplementationInformations()
|
||||
throws ArchivaRestServiceException
|
||||
{
|
||||
Map<String, RBACManager> beans = applicationContext.getBeansOfType( RBACManager.class );
|
||||
|
||||
if ( beans.isEmpty() )
|
||||
{
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
List<RBACManagerImplementationInformation> informations =
|
||||
new ArrayList<RBACManagerImplementationInformation>( beans.size() );
|
||||
|
||||
for ( Map.Entry<String, RBACManager> entry : beans.entrySet() )
|
||||
{
|
||||
UserManager userManager = applicationContext.getBean( entry.getKey(), UserManager.class );
|
||||
if ( userManager.isFinalImplementation() )
|
||||
{
|
||||
RBACManagerImplementationInformation information = new RBACManagerImplementationInformation();
|
||||
information.setBeanId( StringUtils.substringAfter( entry.getKey(), "#" ) );
|
||||
information.setDescriptionKey( userManager.getDescriptionKey() );
|
||||
information.setReadOnly( userManager.isReadOnly() );
|
||||
informations.add( information );
|
||||
}
|
||||
}
|
||||
|
||||
return informations;
|
||||
}
|
||||
|
||||
public Boolean checkLdapConnection()
|
||||
throws ArchivaRestServiceException
|
||||
|
|
|
@ -329,4 +329,15 @@ public class ArchivaRbacManager
|
|||
{
|
||||
log.warn( "eraseDatabase not implemented" );
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFinalImplementation()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public String getDescriptionKey()
|
||||
{
|
||||
return "archiva.redback.rbacmanager.archiva";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1217,7 +1217,7 @@ define("archiva.general-admin",["jquery","i18n","utils","jquery.tmpl","knockout"
|
|||
|
||||
|
||||
RedbackRuntimeConfiguration=function(userManagerImpls,ldapConfiguration,migratedFromRedbackConfiguration,configurationPropertiesEntries
|
||||
,useUsersCache,cacheConfiguration){
|
||||
,useUsersCache,cacheConfiguration,rbacManagerImpls){
|
||||
$.log("new RedbackRuntimeConfiguration");
|
||||
var self=this;
|
||||
this.modified=ko.observable(false);
|
||||
|
@ -1226,6 +1226,9 @@ define("archiva.general-admin",["jquery","i18n","utils","jquery.tmpl","knockout"
|
|||
this.userManagerImpls=ko.observableArray(userManagerImpls);
|
||||
this.userManagerImpls.subscribe(function(newValue){self.modified(true)});
|
||||
|
||||
this.rbacManagerImpls=ko.observableArray(rbacManagerImpls);
|
||||
this.rbacManagerImpls.subscribe(function(newValue){self.modified(true)});
|
||||
|
||||
this.ldapConfiguration=ko.observable(ldapConfiguration);
|
||||
this.ldapConfiguration.subscribe(function(newValue){self.modified(true)});
|
||||
|
||||
|
@ -1270,7 +1273,7 @@ define("archiva.general-admin",["jquery","i18n","utils","jquery.tmpl","knockout"
|
|||
|
||||
var redbackRuntimeConfiguration =
|
||||
new RedbackRuntimeConfiguration(data.userManagerImpls,ldapConfiguration,data.migratedFromRedbackConfiguration,[]
|
||||
,data.useUsersCache,mapCacheConfiguration(data.usersCacheConfiguration));
|
||||
,data.useUsersCache,mapCacheConfiguration(data.usersCacheConfiguration),data.rbacManagerImpls);
|
||||
|
||||
|
||||
var configurationPropertiesEntries = data.configurationPropertiesEntries == null ? []: $.each(data.configurationPropertiesEntries,function(item){
|
||||
|
@ -1372,6 +1375,8 @@ define("archiva.general-admin",["jquery","i18n","utils","jquery.tmpl","knockout"
|
|||
|
||||
this.usedUserManagerImpls=ko.observableArray([]);
|
||||
|
||||
this.rbacManagerImpls=ko.observableArray([]);
|
||||
|
||||
this.modifiesLdapGroupMappings=ko.observableArray([]);
|
||||
|
||||
this.allRoleNames=[];
|
||||
|
@ -1692,7 +1697,7 @@ define("archiva.general-admin",["jquery","i18n","utils","jquery.tmpl","knockout"
|
|||
var mainContent = $("#main-content");
|
||||
mainContent.html(mediumSpinnerImg());
|
||||
|
||||
$.ajax("restServices/archivaServices/redbackRuntimeConfigurationService/userManagerImplementationInformation", {
|
||||
$.ajax("restServices/archivaServices/redbackRuntimeConfigurationService/userManagerImplementationInformations", {
|
||||
type: "GET",
|
||||
dataType: 'json',
|
||||
success: function(data) {
|
||||
|
@ -1706,7 +1711,9 @@ define("archiva.general-admin",["jquery","i18n","utils","jquery.tmpl","knockout"
|
|||
new RedbackRuntimeConfigurationViewModel(redbackRuntimeConfiguration,userManagerImplementationInformations);
|
||||
|
||||
var groups=[];
|
||||
|
||||
var useLdap = $.inArray("ldap",redbackRuntimeConfiguration.usedUserManagerImpls)>0
|
||||
||$.inArray("ldap",redbackRuntimeConfiguration.rbacManagerImpls)>0;
|
||||
$.log("useLdap:"+useLdap);
|
||||
// load ldap roles
|
||||
$.ajax("restServices/redbackServices/ldapGroupMappingService/ldapGroups", {
|
||||
type: "GET",
|
||||
|
@ -1716,7 +1723,8 @@ define("archiva.general-admin",["jquery","i18n","utils","jquery.tmpl","knockout"
|
|||
$.log("groups number:"+groups.length);
|
||||
redbackRuntimeConfiguration.ldapGroups=ko.observableArray(groups);
|
||||
}
|
||||
} ).always(
|
||||
} )
|
||||
.always(
|
||||
function() {
|
||||
$.log("complete");
|
||||
|
||||
|
|
Loading…
Reference in New Issue