Advertisement
Guest User

Untitled

a guest
Apr 18th, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.70 KB | None | 0 0
  1. /**
  2.  *
  3.  */
  4. package cf.test.server.mongo.service;
  5.  
  6. import java.util.ArrayList;
  7. import java.util.Arrays;
  8. import java.util.HashSet;
  9. import java.util.List;
  10. import java.util.Set;
  11.  
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.security.core.GrantedAuthority;
  14. import org.springframework.security.core.authority.SimpleGrantedAuthority;
  15. import org.springframework.security.core.userdetails.UserDetails;
  16. import org.springframework.security.core.userdetails.UserDetailsService;
  17. import org.springframework.security.core.userdetails.UsernameNotFoundException;
  18. import org.springframework.security.crypto.password.PasswordEncoder;
  19. import org.springframework.stereotype.Service;
  20.  
  21. import cf.test.server.mongo.Role;
  22. import cf.test.server.mongo.User;
  23. import cf.test.server.mongo.repository.PermissionRepositiory;
  24. import cf.test.server.mongo.repository.RoleRepositiory;
  25. import cf.test.server.mongo.repository.UserRepositiory;
  26.  
  27. /**
  28.  * @author nickl
  29.  *
  30.  */
  31. @Service
  32. public class CFUserDetailsService implements UserDetailsService {
  33.  
  34.     @Autowired
  35.     private UserRepositiory userRepository;
  36.  
  37.     @Autowired
  38.     private RoleRepositiory roleRepository;
  39.  
  40.     @Autowired
  41.     private PermissionRepositiory permissionRepository;
  42.  
  43.     @Autowired
  44.     private PasswordEncoder passwordEncoder;
  45.  
  46.     public User findUserByEmail(String email) {
  47.         return userRepository.findByEmail(email);
  48.     }
  49.  
  50.     public void saveUser(User user) {
  51.         user.setPassword(passwordEncoder.encode(user.getPassword()));
  52.         user.setStatus("ACTIVE");
  53.         Role role = roleRepository.findByRole("ADMIN"); // TODO everyone would be an admin .. revisit
  54.         user.setRoles(new HashSet<Role>(Arrays.asList(role)));
  55.         userRepository.save(user);
  56.     }
  57.  
  58.    
  59.    
  60.     @Override
  61.     public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
  62.         User user = userRepository.findByEmail(username);
  63.         if (user != null) {
  64.             List<GrantedAuthority> authorities = getUserAuthority(user.getRoles());
  65.             return buildUserForAuthentication(user, authorities);
  66.         } else {
  67.             throw new UsernameNotFoundException("username not found");
  68.         }
  69.     }
  70.  
  71.     private List<GrantedAuthority> getUserAuthority(Set<Role> userRoles) {
  72.         Set<GrantedAuthority> roles = new HashSet<GrantedAuthority>();
  73.         userRoles.forEach((role) -> {
  74.             roles.add(new SimpleGrantedAuthority(role.getRole()));
  75.         });
  76.  
  77.         List<GrantedAuthority> grantedAuthorities = new ArrayList<GrantedAuthority>(roles);
  78.         return grantedAuthorities;
  79.     }
  80.  
  81.     private UserDetails buildUserForAuthentication(User user, List<GrantedAuthority> authorities) {
  82.         UserDetails rtn = new org.springframework.security.core.userdetails.User(user.getEmail(), user.getPassword(),
  83.                 authorities);
  84.         return rtn;
  85.     }
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement