This is an automated email from the ASF dual-hosted git repository. danhaywood pushed a commit to branch CAUSEWAY-3723 in repository https://gitbox.apache.org/repos/asf/causeway.git
commit 6fccaff1200dc72313069c99707915d848e4ed55 Author: danhaywood <[email protected]> AuthorDate: Tue Apr 16 14:07:10 2024 +0100 CAUSEWAY-3723: adds default impl of PasswordEncoder for Secman's autoconfiguration ... ... of its Authenticator --- .../AuthenticatorSecmanAutoConfiguration.java | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/extensions/security/secman/integration/src/main/java/org/apache/causeway/extensions/secman/integration/authenticator/AuthenticatorSecmanAutoConfiguration.java b/extensions/security/secman/integration/src/main/java/org/apache/causeway/extensions/secman/integration/authenticator/AuthenticatorSecmanAutoConfiguration.java index 52ac1d7633..cc28d20496 100644 --- a/extensions/security/secman/integration/src/main/java/org/apache/causeway/extensions/secman/integration/authenticator/AuthenticatorSecmanAutoConfiguration.java +++ b/extensions/security/secman/integration/src/main/java/org/apache/causeway/extensions/secman/integration/authenticator/AuthenticatorSecmanAutoConfiguration.java @@ -20,9 +20,11 @@ package org.apache.causeway.extensions.secman.integration.authenticator; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.AutoConfigureOrder; +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -37,14 +39,29 @@ import org.apache.causeway.extensions.secman.applib.user.dom.ApplicationUserRepo @Configuration public class AuthenticatorSecmanAutoConfiguration { + /** + * The name of the bean that is required to be declared in order that + * {@link #authenticatorSecman(ApplicationUserRepository, PasswordEncoder)} can furnish an {@link Authenticator}. + */ + public static final String PASSWORD_ENCODER_BEAN_NAME = CausewayModuleExtSecmanApplib.NAMESPACE + "PasswordEncoderForSecman"; + @Bean(CausewayModuleExtSecmanApplib.NAMESPACE + ".AuthenticatorSecman") @ConditionalOnMissingBean(Authenticator.class) - @Qualifier("Secman") + @ConditionalOnBean(value = PasswordEncoder.class, name = PASSWORD_ENCODER_BEAN_NAME) public Authenticator authenticatorSecman( final ApplicationUserRepository applicationUserRepository, - final @Qualifier("Secman") PasswordEncoder passwordEncoder) { + final @Qualifier(PASSWORD_ENCODER_BEAN_NAME) PasswordEncoder passwordEncoder) { return new AuthenticatorSecman( applicationUserRepository, passwordEncoder); } + /** + * The {@link PasswordEncoder} that will be provided automatically unless the application chooses to provide some other implementation. + */ + @Bean(PASSWORD_ENCODER_BEAN_NAME) + @ConditionalOnMissingBean(value = PasswordEncoder.class, name = PASSWORD_ENCODER_BEAN_NAME) + public PasswordEncoder passwordEncoder() { + return new BCryptPasswordEncoder(); + } + }
