34. User Details Service Implementation (#2)

This commit is contained in:
Art
2021-09-05 15:48:00 +03:00
parent 15421bad87
commit 344afd3330
2 changed files with 37 additions and 0 deletions

View File

@ -0,0 +1,6 @@
package net.shyshkin.study.fullstack.supportportal.backend.service;
import org.springframework.security.core.userdetails.UserDetailsService;
public interface UserService extends UserDetailsService {
}

View File

@ -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);
}
}