package com.shoppingcart.service.security;
import com.shoppingcart.dao.ShopDao;
import com.shoppingcart.dao.entity.UserCredential;
import javassist.tools.rmi.ObjectNotFoundException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
import java.util.Collection;
/**
* Custom {@link UserDetailsService} implementation.
*
* @author salm
*/
@Service
public class ShoppingCartUserDetailsService implements UserDetailsService {
private final static String ROLE_PREFIX = "ROLE_";
@Autowired
ShopDao shopDao;
private final static Logger logger = LoggerFactory.getLogger(ShoppingCartUserDetailsService.class);
@Override
public UserDetails loadUserByUsername(String name) throws UsernameNotFoundException {
UserCredential userCredential = null;
try {
userCredential = shopDao.getUserByName(name);
} catch (ObjectNotFoundException e) {
logger.error("UserCredential object not found for login: " + name);
e.printStackTrace();
}
if (userCredential == null) {
throw new UsernameNotFoundException("User with username: " + name + " not found.");
}
Collection<? extends GrantedAuthority> authorities =
AuthorityUtils.createAuthorityList(ROLE_PREFIX + userCredential.getRole());
return new User(userCredential.getLogin(), userCredential.getPass(), authorities);
}
}