class LoginProcess {

    public LoginStage getLoginStage() {

        boolean isMenuBasedAuthentication =
                AuthIndexType.LEVEL.equals(loginConfiguration.getIndexType()) || AuthIndexType.COMPOSITE
                        .equals(loginConfiguration.getIndexType()) || AuthIndexType.RESOURCE
                        .equals(loginConfiguration.getIndexType());

        if ((isMenuBasedAuthentication && authContext.getRequirements() == null) || !isMenuBasedAuthentication) {
            authContext.hasMoreRequirements();
        }

        if (AuthContext.Status.IN_PROGRESS.equals(authContext.getStatus())) {
            return LoginStage.REQUIREMENTS_WAITING;
        } else {
            return LoginStage.COMPLETE;
        }
    }

    public  LoginProcess(LoginAuthenticator loginAuthenticator, LoginConfiguration loginConfiguration,
            AuthenticationContext authContext, CoreServicesWrapper coreServicesWrapper);

}