in redback-integrations/redback-rest/redback-rest-services/src/main/java/org/apache/archiva/redback/rest/services/DefaultRoleManagementService.java [486:575]
public ActionStatus updateRoleUsers( Role role )
throws RedbackServiceException
{
for ( org.apache.archiva.redback.rest.api.model.User user : role.getUsers() )
{
String username = user.getUsername();
try
{
if ( !userManager.userExists( username ) )
{
log.error( "user {} not exits", username );
throw new RedbackServiceException(
new ErrorMessage( "user.not.exists", new String[]{ username } ) );
}
UserAssignment assignment;
if ( rbacManager.userAssignmentExists( username ) )
{
assignment = rbacManager.getUserAssignment( username );
}
else
{
assignment = rbacManager.createUserAssignment( username );
}
org.apache.archiva.redback.rbac.Role rbacRole = rbacManager.getRole( role.getName( ) );
assignment.addRoleId( rbacRole.getId() );
assignment = rbacManager.saveUserAssignment( assignment );
log.info( "{} role assigned to {}", role.getName(), username );
}
catch ( RbacManagerException e )
{
log.error( "error during assign role {} to user {}" , role.getName(), username, e );
throw new RedbackServiceException(
new ErrorMessage( "error.assign.role.user", new String[]{ role.getName(), username } ) );
}
catch ( UserManagerException e )
{
throw new RedbackServiceException( new ErrorMessage( e.getMessage() ) );
}
}
for ( org.apache.archiva.redback.rest.api.model.User user : role.getRemovedUsers() )
{
String username = user.getUsername();
try
{
if ( !userManager.userExists( username ) )
{
log.error( "user {} not exits", username );
throw new RedbackServiceException(
new ErrorMessage( "user.not.exists", new String[]{ username } ) );
}
UserAssignment assignment;
if ( rbacManager.userAssignmentExists( username ) )
{
assignment = rbacManager.getUserAssignment( username );
}
else
{
assignment = rbacManager.createUserAssignment( username );
}
org.apache.archiva.redback.rbac.Role rbacRole = rbacManager.getRole( role.getName( ) );
assignment.removeRoleId( rbacRole.getId() );
assignment = rbacManager.saveUserAssignment( assignment );
log.info( "{} role unassigned to {}", role.getName(), username );
}
catch ( RbacManagerException e )
{
log.error( "error during assign role {} to user {}" , role.getName(), username, e );
throw new RedbackServiceException(
new ErrorMessage( "error.unassign.role.user", new String[]{ role.getName(), username } ) );
}
catch ( UserManagerException e )
{
throw new RedbackServiceException( new ErrorMessage( e.getMessage() ) );
}
}
return ActionStatus.SUCCESS;
}