public VerificationStatus validateUserRegistration()

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 );
        }
    }