All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.mkopylec.recaptcha.security.login.FormLoginConfigurerEnhancer Maven / Gradle / Ivy

There is a newer version: 2.3.1
Show newest version
package com.github.mkopylec.recaptcha.security.login;

import com.github.mkopylec.recaptcha.security.RecaptchaAuthenticationFilter;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configurers.FormLoginConfigurer;
import org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter;

import java.lang.reflect.Field;

import static org.springframework.util.ReflectionUtils.findField;
import static org.springframework.util.ReflectionUtils.makeAccessible;
import static org.springframework.util.ReflectionUtils.setField;

public class FormLoginConfigurerEnhancer {

    public static final String DEFAULT_USERNAME_PARAMETER = "username";
    protected static final String AUTHENTICATION_PROCESSING_FILTER_FIELD = "authFilter";

    protected final RecaptchaAuthenticationFilter authenticationFilter;
    protected final LoginFailuresClearingHandler successHandler;
    protected final LoginFailuresCountingHandler failureHandler;

    public FormLoginConfigurerEnhancer(RecaptchaAuthenticationFilter authenticationFilter, LoginFailuresClearingHandler successHandler, LoginFailuresCountingHandler failureHandler) {
        this.authenticationFilter = authenticationFilter;
        this.successHandler = successHandler;
        this.failureHandler = failureHandler;
    }

    public FormLoginConfigurer addRecaptchaSupport(FormLoginConfigurer loginConfigurer) {
        Field authFilterField = findField(loginConfigurer.getClass(), AUTHENTICATION_PROCESSING_FILTER_FIELD, AbstractAuthenticationProcessingFilter.class);
        makeAccessible(authFilterField);
        setField(authFilterField, loginConfigurer, authenticationFilter);
        return loginConfigurer.usernameParameter(DEFAULT_USERNAME_PARAMETER)
                .successHandler(successHandler)
                .failureHandler(failureHandler);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy