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();
+    }
+
 }

Reply via email to