From 344afd3330f9a40ac0264b572f7740d5b9a0b0dd Mon Sep 17 00:00:00 2001 From: Art Date: Sun, 5 Sep 2021 15:48:00 +0300 Subject: [PATCH] 34. User Details Service Implementation (#2) --- .../backend/service/UserService.java | 6 ++++ .../backend/service/UserServiceImpl.java | 31 +++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserService.java create mode 100644 support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserServiceImpl.java diff --git a/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserService.java b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserService.java new file mode 100644 index 0000000..ab3d1d6 --- /dev/null +++ b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserService.java @@ -0,0 +1,6 @@ +package net.shyshkin.study.fullstack.supportportal.backend.service; + +import org.springframework.security.core.userdetails.UserDetailsService; + +public interface UserService extends UserDetailsService { +} diff --git a/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserServiceImpl.java b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserServiceImpl.java new file mode 100644 index 0000000..09e85e0 --- /dev/null +++ b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserServiceImpl.java @@ -0,0 +1,31 @@ +package net.shyshkin.study.fullstack.supportportal.backend.service; + +import lombok.RequiredArgsConstructor; +import net.shyshkin.study.fullstack.supportportal.backend.domain.User; +import net.shyshkin.study.fullstack.supportportal.backend.domain.UserPrincipal; +import net.shyshkin.study.fullstack.supportportal.backend.repository.UserRepository; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.time.LocalDateTime; + +@Service +@RequiredArgsConstructor +public class UserServiceImpl implements UserService { + + private final UserRepository userRepository; + + @Override + @Transactional + public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { + User user = userRepository + .findByUsername(username) + .orElseThrow(() -> new UsernameNotFoundException("User with username `" + username + "` not found")); + user.setLastLoginDateDisplay(user.getLastLoginDate()); + user.setLastLoginDate(LocalDateTime.now()); + userRepository.save(user); + return new UserPrincipal(user); + } +}