Advertisement
Guest User

Untitled

a guest
Nov 17th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.55 KB | None | 0 0
  1. import org.apache.commons.logging.Log;
  2. import org.apache.commons.logging.LogFactory;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.security.authentication.AuthenticationManager;
  5. import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
  6. import org.springframework.security.core.Authentication;
  7. import org.springframework.security.core.context.SecurityContextHolder;
  8. import org.springframework.security.core.userdetails.UserDetails;
  9. import org.springframework.security.core.userdetails.UserDetailsService;
  10. import org.springframework.security.core.userdetails.UsernameNotFoundException;
  11. import org.springframework.security.crypto.password.PasswordEncoder;
  12. import org.springframework.stereotype.Service;
  13.  
  14. import rs.ac.uns.ftn.informatika.spring.security.model.User;
  15. import rs.ac.uns.ftn.informatika.spring.security.repository.UserRepository;
  16.  
  17. @Service
  18. public class CustomUserDetailsService implements UserDetailsService {
  19.  
  20. protected final Log LOGGER = LogFactory.getLog(getClass());
  21.  
  22. @Autowired
  23. private UserRepository userRepository;
  24.  
  25. @Autowired
  26. private PasswordEncoder passwordEncoder;
  27.  
  28. @Autowired
  29. private AuthenticationManager authenticationManager;
  30.  
  31. // Funkcija koja na osnovu username-a iz baze vraca objekat User-a
  32. @Override
  33. public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
  34. User user = userRepository.findByUsername(username);
  35. if (user == null) {
  36. throw new UsernameNotFoundException(String.format("No user found with username '%s'.", username));
  37. } else {
  38. return user;
  39. }
  40. }
  41.  
  42. // Funkcija pomocu koje korisnik menja svoju lozinku
  43. public void changePassword(String oldPassword, String newPassword) {
  44.  
  45. Authentication currentUser = SecurityContextHolder.getContext().getAuthentication();
  46. String username = currentUser.getName();
  47.  
  48. if (authenticationManager != null) {
  49. LOGGER.debug("Re-authenticating user '" + username + "' for password change request.");
  50.  
  51. authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(username, oldPassword));
  52. } else {
  53. LOGGER.debug("No authentication manager set. can't change Password!");
  54.  
  55. return;
  56. }
  57.  
  58. LOGGER.debug("Changing password for user '" + username + "'");
  59.  
  60. User user = (User) loadUserByUsername(username);
  61.  
  62. // pre nego sto u bazu upisemo novu lozinku, potrebno ju je hesirati
  63. // ne zelimo da u bazi cuvamo lozinke u plain text formatu
  64. user.setPassword(passwordEncoder.encode(newPassword));
  65. userRepository.save(user);
  66.  
  67. }
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement