DefaultUserDetailsService.java
package sprout.security.authentication;
import sprout.beans.InfrastructureBean;
import sprout.config.AppConfig;
import sprout.security.authentication.exception.UsernameNotFoundException;
import sprout.security.authentication.password.BCryptPasswordEncoder;
import sprout.security.authentication.password.PasswordEncoder;
import sprout.security.core.*;
import java.util.List;
public class DefaultUserDetailsService implements UserDetailsService, InfrastructureBean {
private final AppConfig appConfig;
private final PasswordEncoder passwordEncoder;
public DefaultUserDetailsService(AppConfig appConfig, PasswordEncoder passwordEncoder) {
this.appConfig = appConfig;
this.passwordEncoder = passwordEncoder;
}
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
if ("user".equals(username)) {
String defaultRawPassword = appConfig.getStringProperty("sprout.security.default.user.password", "password");
String encodedPassword = passwordEncoder.encode(defaultRawPassword);
GrantedAuthority grantedAuthority = new DefaultGrantedAuthority("USER");
return new DefaultUserDetails(username, encodedPassword, List.of(grantedAuthority));
}
throw new UsernameNotFoundException("Default UserDetailsService: User '" + username + "' not found.");
}
}