Get smtp Config into DefaultBruteForceProtector

I have to send email when account is locked after 3 wrong password attempts.

So I have added below code inside DefaultBruteForceProtector failure method.

    ```

DefaultEmailSenderProvider senderProvider = new DefaultEmailSenderProvider(session);
UserModel user1 = session.users().getUserById(realm, userId);
try {
senderProvider.send(
session.getContext().getRealm().getSmtpConfig(),
user1,
“test”,
“body test”,
“html test”
);
} catch (EmailException e) {
e.printStackTrace();
} catch (NullPointerException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}





public void failure(KeycloakSession session, LoginEvent event) {
logger.debug(“failure”);
logger.info(“failure”);
RealmModel realm = getRealmModel(session, event);
logFailure(event);

    String userId = event.userId;

    UserLoginFailureModel userLoginFailure = getUserModel(session, event);
    if (userLoginFailure == null) {
        userLoginFailure = session.loginFailures().addUserLoginFailure(realm, userId);
    }
    userLoginFailure.setLastIPFailure(event.ip);
    long currentTime = Time.currentTimeMillis();
    long last = userLoginFailure.getLastFailure();
    long deltaTime = 0;
    if (last > 0) {
        deltaTime = currentTime - last;
    }
    userLoginFailure.setLastFailure(currentTime);

    DefaultEmailSenderProvider senderProvider = new DefaultEmailSenderProvider(session);
    UserModel user1 = session.users().getUserById(realm, userId);
    try {
        senderProvider.send(
                session.getContext().getRealm().getSmtpConfig(),
                user1,
                "test",
                "body test",
                "html test"
        );
    } catch (EmailException e) {
        e.printStackTrace();
    } catch (NullPointerException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }


    if(realm.isPermanentLockout()) {
        userLoginFailure.incrementFailures();
        logger.debugv("new num failures: {0}", userLoginFailure.getNumFailures());
        logger.infov("new num failures: {0}", userLoginFailure.getNumFailures());

        if(userLoginFailure.getNumFailures() == realm.getFailureFactor()) {
            UserModel user = session.users().getUserById(realm, userId);
            if (user == null) {
                return;
            }
            logger.debugv("user {0} locked permanently due to too many login attempts", user.getUsername());
            logger.infov("user {0} locked permanently due to too many login attempts", user.getUsername());
            user.setEnabled(false);
            user.setSingleAttribute(DISABLED_REASON, DISABLED_BY_PERMANENT_LOCKOUT);
            return;
        }

        if (last > 0 && deltaTime < realm.getQuickLoginCheckMilliSeconds()) {
            logger.debugv("quick login, set min wait seconds");
            int waitSeconds = realm.getMinimumQuickLoginWaitSeconds();
            int notBefore = (int) (currentTime / 1000) + waitSeconds;
            logger.debugv("set notBefore: {0}", notBefore);
            userLoginFailure.setFailedLoginNotBefore(notBefore);
        }
        return;
    }

    if (deltaTime > 0) {
        // if last failure was more than MAX_DELTA clear failures
        if (deltaTime > (long) realm.getMaxDeltaTimeSeconds() * 1000L) {
            userLoginFailure.clearFailures();
        }
    }
    userLoginFailure.incrementFailures();
    logger.debugv("new num failures: {0}", userLoginFailure.getNumFailures());

    int waitSeconds = realm.getWaitIncrementSeconds() *  (userLoginFailure.getNumFailures() / realm.getFailureFactor());
    logger.debugv("waitSeconds: {0}", waitSeconds);
    logger.debugv("deltaTime: {0}", deltaTime);

    if (waitSeconds == 0) {
        if (last > 0 && deltaTime < realm.getQuickLoginCheckMilliSeconds()) {
            logger.debugv("quick login, set min wait seconds");
            waitSeconds = realm.getMinimumQuickLoginWaitSeconds();
        }
    }
    if (waitSeconds > 0) {
        waitSeconds = Math.min(realm.getMaxFailureWaitSeconds(), waitSeconds);
        int notBefore = (int) (currentTime / 1000) + waitSeconds;
        logger.debugv("set notBefore: {0}", notBefore);
        userLoginFailure.setFailedLoginNotBefore(notBefore);
    }
}

But the only issue is 
session.getContext().getRealm() this Realm is null. and can't get Smtp configs to send email. please help me to sort this out.

need to send email when account is locked. wrote a listener and can send emails. but account locking happen after listener called. so can't use listener as well. Need a way to get smtp configs into DefaultBruteForceProtector