service.impl/src/main/java/com/hack23/cia/service/impl/action/application/access/LoginBlockedAccessImpl.java
private void blockByUserFailedLoginAttempts(final String email, final LoginBlockResultImpl loginBlockResultImpl) {
		final UserAccount userExist = userDAO.findFirstByProperty(UserAccount_.email, email);

		if (userExist != null) {

			final ApplicationConfiguration maxLoginAttemptsByUser = applicationConfigurationService.checkValueOrLoadDefault(MAX_FAILED_LOGIN_ATTEMPTS_RECENT_HOUR_PER_USER, BLOCKS_ANY_LOGIN_ATTEMPTS_AFTER_THIS_NUMBER_IS_REACHED, ConfigurationGroup.AUTHENTICATION, LoginBlockedAccessImpl.class.getSimpleName(), LOGIN_BLOCKER, BLOCKS_LOGIN_ATTEMPTS, APPLICATION_AUTHENTICATION_ALLOW_MAX_RECENT_FAILED_LOGINS_BY_USER, DEFAULT_MAX_LOGIN_ATTEMPTS);

			final List<ApplicationActionEvent> failedLoginsByThisUser = applicationActionEventDAO.findListByProperty(
					new Object[] { email, ApplicationOperationType.AUTHENTICATION, ServiceResult.FAILURE.toString() },
					ApplicationActionEvent_.elementId, ApplicationActionEvent_.applicationOperation,
					ApplicationActionEvent_.applicationMessage);

			final Date oneHourAgo = new Date(System.currentTimeMillis() - ONE_HOUR);
			final Map<Boolean, List<ApplicationActionEvent>> recentOldLoginAttemptsMap = failedLoginsByThisUser.stream()
					.collect(Collectors.groupingBy((final ApplicationActionEvent x ) -> x.getCreatedDate().after(oneHourAgo)));
			final List<ApplicationActionEvent> recentFailedLogins = recentOldLoginAttemptsMap.get(Boolean.TRUE);
			if (recentFailedLogins != null && recentFailedLogins.size() > NumberUtils.toInt(maxLoginAttemptsByUser.getPropertyValue(),DEFAULT_MAX_LOGINS)) {
				loginBlockResultImpl.setBlocked(true);
				loginBlockResultImpl.addMessages(BLOCKED_BY_MORE_THAN_5_RECENT_LOGIN_ATTEMPTS_BY_THIS_USER);
			}
		}
	}
private void blockByUserFailedLoginAttempts(final String email, final LoginBlockResultImpl loginBlockResultImpl) {
		final UserAccount userExist = userDAO.findFirstByProperty(UserAccount_.email, email);

		if (userExist != null) {

			final ApplicationConfiguration maxLoginAttemptsByUser = applicationConfigurationService.checkValueOrLoadDefault(MAX_FAILED_LOGIN_ATTEMPTS_RECENT_HOUR_PER_USER, BLOCKS_ANY_LOGIN_ATTEMPTS_AFTER_THIS_NUMBER_IS_REACHED, ConfigurationGroup.AUTHENTICATION, LoginBlockedAccessImpl.class.getSimpleName(), LOGIN_BLOCKER, BLOCKS_LOGIN_ATTEMPTS, APPLICATION_AUTHENTICATION_ALLOW_MAX_RECENT_FAILED_LOGINS_BY_USER, DEFAULT_MAX_LOGIN_ATTEMPTS);

			final List<ApplicationActionEvent> failedLoginsByThisUser = applicationActionEventDAO.findListByProperty(
					new Object[] { email, ApplicationOperationType.AUTHENTICATION, ServiceResult.FAILURE.toString() },
					ApplicationActionEvent_.elementId, ApplicationActionEvent_.applicationOperation,
					ApplicationActionEvent_.applicationMessage);

			final Date oneHourAgo = new Date(System.currentTimeMillis() - ONE_HOUR);
			final Map<Boolean, List<ApplicationActionEvent>> recentOldLoginAttemptsMap = failedLoginsByThisUser.stream()
					.collect(Collectors.groupingBy((final ApplicationActionEvent x ) -> x.getCreatedDate().after(oneHourAgo)));
			final List<ApplicationActionEvent> recentFailedLogins = recentOldLoginAttemptsMap.get(Boolean.TRUE);
			if (recentFailedLogins != null && recentFailedLogins.size() > NumberUtils.toInt(maxLoginAttemptsByUser.getPropertyValue(),DEFAULT_MAX_LOGINS)) {
				loginBlockResultImpl.setBlocked(true);
				loginBlockResultImpl.addMessages(BLOCKED_BY_MORE_THAN_5_RECENT_LOGIN_ATTEMPTS_BY_THIS_USER);
			}
		}
	}
private void blockByUserFailedLoginAttempts ( final String email , final LoginBlockResultImpl loginBlockResultImpl ) { final UserAccount userExist = userDAO . findFirstByProperty ( UserAccount_ . email , email ) ; if ( userExist != null ) { final ApplicationConfiguration maxLoginAttemptsByUser = applicationConfigurationService . checkValueOrLoadDefault ( MAX_FAILED_LOGIN_ATTEMPTS_RECENT_HOUR_PER_USER , BLOCKS_ANY_LOGIN_ATTEMPTS_AFTER_THIS_NUMBER_IS_REACHED , ConfigurationGroup . AUTHENTICATION , LoginBlockedAccessImpl . class . getSimpleName ( ) , LOGIN_BLOCKER , BLOCKS_LOGIN_ATTEMPTS , APPLICATION_AUTHENTICATION_ALLOW_MAX_RECENT_FAILED_LOGINS_BY_USER , DEFAULT_MAX_LOGIN_ATTEMPTS ) ; final List < ApplicationActionEvent > failedLoginsByThisUser = applicationActionEventDAO . findListByProperty ( new Object [ ] { email , ApplicationOperationType . AUTHENTICATION , ServiceResult . FAILURE . toString ( ) } , ApplicationActionEvent_ . elementId , ApplicationActionEvent_ . applicationOperation , ApplicationActionEvent_ . applicationMessage ) ; final Date oneHourAgo = new Date ( System . currentTimeMillis ( ) - ONE_HOUR ) ; final Map < Boolean , List < ApplicationActionEvent > > recentOldLoginAttemptsMap = failedLoginsByThisUser . stream ( ) . collect ( Collectors . groupingBy ( ( final ApplicationActionEvent x ) -> x . getCreatedDate ( ) . after ( oneHourAgo ) ) ) ; final List < ApplicationActionEvent > recentFailedLogins = recentOldLoginAttemptsMap . get ( Boolean . TRUE ) ; if ( recentFailedLogins != null && recentFailedLogins . size ( ) > NumberUtils . toInt ( maxLoginAttemptsByUser . getPropertyValue ( ) , DEFAULT_MAX_LOGINS ) ) { loginBlockResultImpl . setBlocked ( true ) ; loginBlockResultImpl . addMessages ( BLOCKED_BY_MORE_THAN_5_RECENT_LOGIN_ATTEMPTS_BY_THIS_USER ) ; } } }
Block by user failed login attempts.

@param email
the email
@param loginBlockResultImpl
the login block result impl
Block by user failed login attempts .