in redback-integrations/redback-rest/redback-rest-services/src/main/java/org/apache/archiva/redback/rest/services/v2/DefaultUserService.java [200:289]
public UserInfo createUser( User user )
throws RedbackServiceException
{
if ( user == null )
{
throw new RedbackServiceException( ErrorMessage.of( MessageKeys.ERR_USER_ID_EMPTY ), 422 );
}
UserInfo result;
if ( Arrays.binarySearch( INVALID_CREATE_USER_NAMES, user.getUserId( ) ) >= 0 )
{
throw new RedbackServiceException( ErrorMessage.of( MessageKeys.ERR_USER_ID_INVALID, user.getUserId( ) ), 422 );
}
try
{
org.apache.archiva.redback.users.User u = userManager.findUser( user.getUserId( ) );
if ( u != null )
{
httpServletResponse.setHeader( "Location", uriInfo.getAbsolutePathBuilder( ).path( u.getUsername( ) ).build( ).toString( ) );
throw new RedbackServiceException(
ErrorMessage.of( MessageKeys.ERR_USER_EXISTS, user.getUserId( ) ), 303 );
}
}
catch ( UserNotFoundException e )
{
//ignore we just want to prevent non human readable error message from backend :-)
log.debug( "User {} does not exist", user.getUserId( ) );
}
catch ( UserManagerException e )
{
throw new RedbackServiceException( ErrorMessage.of( MessageKeys.ERR_UNKNOWN, e.getMessage( ) ) );
}
// data validation
if ( StringUtils.isEmpty( user.getUserId( ) ) )
{
throw new RedbackServiceException( ErrorMessage.of( MessageKeys.ERR_USER_ID_EMPTY ), 422 );
}
if ( StringUtils.isEmpty( user.getFullName( ) ) )
{
throw new RedbackServiceException( ErrorMessage.of( MessageKeys.ERR_USER_FULL_NAME_EMPTY ), 422 );
}
if ( StringUtils.isEmpty( user.getEmail( ) ) )
{
throw new RedbackServiceException( ErrorMessage.of( MessageKeys.ERR_USER_EMAIL_EMPTY ), 422 );
}
try
{
org.apache.archiva.redback.users.User u =
userManager.createUser( user.getUserId( ), user.getFullName( ), user.getEmail( ) );
u.setPassword( user.getPassword( ) );
u.setLocked( user.isLocked( ) );
u.setPasswordChangeRequired( user.isPasswordChangeRequired( ) );
u.setValidated( user.isValidated( ) );
u = userManager.addUser( u );
if ( !user.isPasswordChangeRequired( ) )
{
u.setPasswordChangeRequired( false );
try
{
u = userManager.updateUser( u );
log.debug( "User {} created", u.getUsername( ) );
}
catch ( UserNotFoundException e )
{
throw new RedbackServiceException( e.getMessage( ) );
}
}
roleManager.assignRole( RedbackRoleConstants.REGISTERED_USER_ROLE_ID, u.getUsername( ) );
result = getRestUser( u );
httpServletResponse.setStatus( 201 );
httpServletResponse.setHeader( "Location", uriInfo.getAbsolutePathBuilder( ).path( user.getUserId( ) ).build( ).toString( ) );
}
catch ( RoleManagerException rpe )
{
log.error( "RoleProfile Error: {}", rpe.getMessage( ), rpe );
throw new RedbackServiceException( ErrorMessage.of( MessageKeys.ERR_USER_ASSIGN_ROLE ) );
}
catch ( UserManagerException e )
{
log.error( "UserManagerException: {}", e.getMessage( ), e );
throw new RedbackServiceException( ErrorMessage.of( MessageKeys.ERR_UNKNOWN, e.getMessage( ) ) );
}
return result;
}