Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- *
- */
- package cf.test.server.mongo.service;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.HashSet;
- import java.util.List;
- import java.util.Set;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.security.core.GrantedAuthority;
- import org.springframework.security.core.authority.SimpleGrantedAuthority;
- import org.springframework.security.core.userdetails.UserDetails;
- import org.springframework.security.core.userdetails.UserDetailsService;
- import org.springframework.security.core.userdetails.UsernameNotFoundException;
- import org.springframework.security.crypto.password.PasswordEncoder;
- import org.springframework.stereotype.Service;
- import cf.test.server.mongo.Role;
- import cf.test.server.mongo.User;
- import cf.test.server.mongo.repository.PermissionRepositiory;
- import cf.test.server.mongo.repository.RoleRepositiory;
- import cf.test.server.mongo.repository.UserRepositiory;
- /**
- * @author nickl
- *
- */
- @Service
- public class CFUserDetailsService implements UserDetailsService {
- @Autowired
- private UserRepositiory userRepository;
- @Autowired
- private RoleRepositiory roleRepository;
- @Autowired
- private PermissionRepositiory permissionRepository;
- @Autowired
- private PasswordEncoder passwordEncoder;
- public User findUserByEmail(String email) {
- return userRepository.findByEmail(email);
- }
- public void saveUser(User user) {
- user.setPassword(passwordEncoder.encode(user.getPassword()));
- user.setStatus("ACTIVE");
- Role role = roleRepository.findByRole("ADMIN"); // TODO everyone would be an admin .. revisit
- user.setRoles(new HashSet<Role>(Arrays.asList(role)));
- userRepository.save(user);
- }
- @Override
- public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
- User user = userRepository.findByEmail(username);
- if (user != null) {
- List<GrantedAuthority> authorities = getUserAuthority(user.getRoles());
- return buildUserForAuthentication(user, authorities);
- } else {
- throw new UsernameNotFoundException("username not found");
- }
- }
- private List<GrantedAuthority> getUserAuthority(Set<Role> userRoles) {
- Set<GrantedAuthority> roles = new HashSet<GrantedAuthority>();
- userRoles.forEach((role) -> {
- roles.add(new SimpleGrantedAuthority(role.getRole()));
- });
- List<GrantedAuthority> grantedAuthorities = new ArrayList<GrantedAuthority>(roles);
- return grantedAuthorities;
- }
- private UserDetails buildUserForAuthentication(User user, List<GrantedAuthority> authorities) {
- UserDetails rtn = new org.springframework.security.core.userdetails.User(user.getEmail(), user.getPassword(),
- authorities);
- return rtn;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement