11package ru .javaops .bootjava .config ;
22
3+ import lombok .AllArgsConstructor ;
4+ import lombok .extern .slf4j .Slf4j ;
35import org .springframework .beans .factory .annotation .Autowired ;
6+ import org .springframework .context .annotation .Bean ;
47import org .springframework .context .annotation .Configuration ;
58import org .springframework .security .config .annotation .authentication .builders .AuthenticationManagerBuilder ;
69import org .springframework .security .config .annotation .web .configuration .EnableWebSecurity ;
710import org .springframework .security .config .annotation .web .configuration .WebSecurityConfigurerAdapter ;
11+ import org .springframework .security .core .userdetails .UserDetailsService ;
12+ import org .springframework .security .core .userdetails .UsernameNotFoundException ;
813import org .springframework .security .crypto .factory .PasswordEncoderFactories ;
14+ import ru .javaops .bootjava .AuthUser ;
15+ import ru .javaops .bootjava .model .User ;
16+ import ru .javaops .bootjava .repository .UserRepository ;
17+
18+ import java .util .Optional ;
919
1020@ Configuration
1121@ EnableWebSecurity
22+ @ Slf4j
23+ @ AllArgsConstructor
1224public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
1325
26+ private final UserRepository userRepository ;
27+
28+ @ Bean
29+ public UserDetailsService userDetailsService () {
30+ return email -> {
31+ log .debug ("Authenticating '{}'" , email );
32+ Optional <User > optionalUser = userRepository .findByEmailIgnoreCase (email );
33+ return new AuthUser (optionalUser .orElseThrow (
34+ () -> new UsernameNotFoundException ("User '" + email + "' was not found" )));
35+ };
36+ }
37+
1438 @ Autowired
1539 public void configureGlobal (AuthenticationManagerBuilder auth ) throws Exception {
16- auth .inMemoryAuthentication ()
17- .passwordEncoder (PasswordEncoderFactories .createDelegatingPasswordEncoder ())
18- .withUser ("user@gmail.com" ).password ("{noop}password" ).roles ("USER" ).and ()
19- .withUser ("admin@javaops.ru" ).password ("{noop}admin" ).roles ("USER" , "ADMIN" );
40+ auth .userDetailsService (userDetailsService ())
41+ .passwordEncoder (PasswordEncoderFactories .createDelegatingPasswordEncoder ());
2042 }
2143}
0 commit comments