in redback-integrations/redback-rest/redback-rest-services/src/main/java/org/apache/archiva/redback/rest/services/v2/DefaultUserService.java [807:884]
public VerificationStatus validateUserRegistration( String userId, String key ) throws RedbackServiceException
{
String principal = null;
try
{
AuthenticationKey authkey = securitySystem.getKeyManager( ).findKey( key );
org.apache.archiva.redback.users.User user =
securitySystem.getUserManager( ).findUser( authkey.getForPrincipal( ) );
if ( user.isValidated( ) )
{
throw new RedbackServiceException( ErrorMessage.of( MessageKeys.ERR_REGISTRATION_USER_VALIDATED ), 404 );
}
user.setValidated( true );
user.setLocked( false );
user.setPasswordChangeRequired( true );
user.setEncodedPassword( "" );
securitySystem.getUserManager( ).updateUser( user );
principal = user.getUsername( );
TokenBasedAuthenticationDataSource authsource = new TokenBasedAuthenticationDataSource( );
authsource.setPrincipal( principal );
authsource.setToken( authkey.getKey( ) );
authsource.setEnforcePasswordChange( false );
VerificationStatus status = new VerificationStatus( false );
SecuritySession authStatus = securitySystem.authenticate( authsource );
if ( authStatus.isAuthenticated( ) )
{
Token accessToken = jwtAuthenticator.generateToken( principal );
status.setAccessToken( accessToken.getData( ) );
status.setSuccess( true );
}
else
{
user.setValidated( false );
user.setLocked( true );
user.setPasswordChangeRequired( false );
securitySystem.getUserManager( ).updateUser( user );
}
log.info( "account validated for user {}", user.getUsername( ) );
return status;
}
catch ( MustChangePasswordException e )
{
throw new RedbackServiceException( ErrorMessage.of( MessageKeys.ERR_AUTH_PASSWORD_CHANGE_REQUIRED ), Response.Status.FORBIDDEN.getStatusCode( ) );
}
catch ( AccountLockedException e )
{
throw new RedbackServiceException( ErrorMessage.of( MessageKeys.ERR_AUTH_ACCOUNT_LOCKED ), Response.Status.FORBIDDEN.getStatusCode( ) );
}
catch ( AuthenticationException e )
{
throw new RedbackServiceException( ErrorMessage.of( MessageKeys.ERR_AUTH_INVALID_CREDENTIALS ), Response.Status.FORBIDDEN.getStatusCode( ) );
}
catch ( KeyNotFoundException e )
{
log.info( "Invalid key requested: {}", key );
throw new RedbackServiceException( ErrorMessage.of( MessageKeys.ERR_REGISTRATION_KEY_INVALID ), 404 );
}
catch ( KeyManagerException e )
{
throw new RedbackServiceException( ErrorMessage.of( MessageKeys.ERR_KEYMANAGER_FAIL, e.getMessage( ) ), 400 );
}
catch ( UserNotFoundException e )
{
throw new RedbackServiceException( ErrorMessage.of( MessageKeys.ERR_USER_NOT_FOUND, principal ), 404 );
}
catch ( UserManagerException e )
{
throw new RedbackServiceException( ErrorMessage.of( MessageKeys.ERR_USERMANAGER_FAIL, e.getMessage( ) ), 400 );
}
}