private void postLoginFailedEvent()

in src/main/java/org/apache/sling/auth/core/impl/SlingAuthenticator.java [1419:1445]


    private void postLoginFailedEvent(final HttpServletRequest request,
            final AuthenticationInfo authInfo, Exception reason) {
        // The reason for the failure may be useful to downstream subscribers.
        FAILURE_REASON_CODES reasonCode = FailureCodesMapper.getFailureReason(authInfo, reason);
        //if reason code is unknowm, it is problem some non-login related failure, so don't send the event
        if (reasonCode != FAILURE_REASON_CODES.UNKNOWN) {
            final Map<String, Object> properties = new HashMap<>();
            if (authInfo.getUser() != null) {
                properties.put(SlingConstants.PROPERTY_USERID, authInfo.getUser());
            }
            if (authInfo.getAuthType() != null) {
                properties.put(AuthenticationInfo.AUTH_TYPE, authInfo.getAuthType());
            }
            properties.put("reason_code", reasonCode.name());

            // allow extensions to supply additional properties
            final List<LoginEventDecorator> localList = this.loginEventDecorators;
            for (final LoginEventDecorator decorator : localList) {
                decorator.decorateLoginFailedEvent(request, authInfo, properties);
            }

            EventAdmin localEA = this.eventAdmin;
            if (localEA != null) {
                localEA.postEvent(new Event(AuthConstants.TOPIC_LOGIN_FAILED, properties));
            }
        }
    }