GeneratorUserDetailService.java 1.5 KB
package isa.qa.config.security;

import isa.qa.dao.UserDao;
import isa.qa.entity.User;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;

import java.util.Collection;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 *  Get user detail of security service
 *
 *  @author    May
 *  @date      2018/11/21 23:20
 *  @version   1.0
 */
@Service
@AllArgsConstructor
public class GeneratorUserDetailService implements UserDetailsService {

    private final UserDao userDao;

    @Override
    public SecurityUser loadUserByUsername(String email) throws UsernameNotFoundException {
        Optional<User> user = userDao.findByEmail(email);

        if (!user.isPresent()) {
            throw new UsernameNotFoundException(email);
        }

        SecurityUser securityUser = new SecurityUser();

        BeanUtils.copyProperties(user.get(), securityUser);
        Collection<? extends GrantedAuthority> authorities = Stream.of(securityUser.getRole().getName())
                .map(SimpleGrantedAuthority::new).collect(Collectors.toList());

        securityUser.setAuthorities(authorities);

        return securityUser;
    }
}