From 2bea155e63200c5bf40923faa110bf4e4eecafe4 Mon Sep 17 00:00:00 2001 From: Vitaliy Fedoriv <vitaliy.fedoriv@gmail.com> Date: Wed, 23 May 2018 11:10:32 +0300 Subject: [PATCH] add UsedDetails impl --- .../security/UserDetailsServiceImpl.java | 27 +++++++++++++++++++ .../petclinic/security/UserRepository.java | 15 +++++++++++ 2 files changed, 42 insertions(+) create mode 100644 src/main/java/org/springframework/samples/petclinic/security/UserDetailsServiceImpl.java create mode 100644 src/main/java/org/springframework/samples/petclinic/security/UserRepository.java diff --git a/src/main/java/org/springframework/samples/petclinic/security/UserDetailsServiceImpl.java b/src/main/java/org/springframework/samples/petclinic/security/UserDetailsServiceImpl.java new file mode 100644 index 00000000..9997e148 --- /dev/null +++ b/src/main/java/org/springframework/samples/petclinic/security/UserDetailsServiceImpl.java @@ -0,0 +1,27 @@ +package org.springframework.samples.petclinic.security; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.samples.petclinic.model.security.User; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +public class UserDetailsServiceImpl implements UserDetailsService { + + @Autowired + private UserRepository userRepository; + + @Override + @Transactional(readOnly = true) + public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { + User user = userRepository.findByUsername(username); + if (user != null) { + return user; + } + throw new UsernameNotFoundException(username); + } + +} diff --git a/src/main/java/org/springframework/samples/petclinic/security/UserRepository.java b/src/main/java/org/springframework/samples/petclinic/security/UserRepository.java new file mode 100644 index 00000000..a1e9658f --- /dev/null +++ b/src/main/java/org/springframework/samples/petclinic/security/UserRepository.java @@ -0,0 +1,15 @@ +package org.springframework.samples.petclinic.security; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.samples.petclinic.model.security.User; +import org.springframework.stereotype.Repository; + +@Repository +public interface UserRepository extends JpaRepository<User, Long> { + @Query("SELECT DISTINCT user FROM User user " + + "INNER JOIN FETCH user.authorities AS authorities " + + "WHERE user.username = :username") + User findByUsername(@Param("username") String username); +} \ No newline at end of file -- GitLab