View Javadoc
1   package pk.lucidxpo.ynami.service.sample.security;
2   
3   import org.springframework.beans.factory.annotation.Autowired;
4   import org.springframework.security.core.userdetails.UserDetails;
5   import org.springframework.security.core.userdetails.UserDetailsService;
6   import org.springframework.security.core.userdetails.UsernameNotFoundException;
7   import org.springframework.stereotype.Service;
8   import org.springframework.transaction.annotation.Transactional;
9   import pk.lucidxpo.ynami.persistence.dao.security.UserRepository;
10  import pk.lucidxpo.ynami.persistence.model.security.User;
11  
12  import static pk.lucidxpo.ynami.spring.security.UserPrincipal.create;
13  
14  @Service
15  public class UserDetailsServiceImpl implements UserDetailsService {
16      private final UserRepository userRepository;
17  
18      @Autowired
19      public UserDetailsServiceImpl(final UserRepository userRepository) {
20          this.userRepository = userRepository;
21      }
22  
23      @Override
24      @Transactional
25      public UserDetails loadUserByUsername(final String usernameOrEmail) throws UsernameNotFoundException {
26          final User user = userRepository.findByUsernameOrEmail(usernameOrEmail, usernameOrEmail)
27                  .orElseThrow(() ->
28                          new UsernameNotFoundException("User not found with username or email : " + usernameOrEmail)
29                  );
30  
31          return create(user);
32      }
33  }