package edu.asu.spring.quadriga.authentication; import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; 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 edu.asu.spring.quadriga.domain.IQuadrigaRole; import edu.asu.spring.quadriga.domain.IUser; import edu.asu.spring.quadriga.exceptions.QuadrigaStorageException; import edu.asu.spring.quadriga.service.IUserManager; import edu.asu.spring.quadriga.service.QuadrigaUserDetails; import edu.asu.spring.quadriga.web.login.QuadrigaGrantedAuthority; @Service("userService") public class UserService implements UserDetailsService { @Autowired private IUserManager userManager; @Override public UserDetails loadUserByUsername(String arg0) throws UsernameNotFoundException { IUser user; try { user = userManager.getUser(arg0); } catch (QuadrigaStorageException e) { // TODO Auto-generated catch block e.printStackTrace(); throw new UsernameNotFoundException("Error getting user details.", e); } if (user == null) throw new UsernameNotFoundException("Couldn't find username."); List<QuadrigaGrantedAuthority> roles = new ArrayList<QuadrigaGrantedAuthority>(); for (IQuadrigaRole role : user.getQuadrigaRoles()) { roles.add(new QuadrigaGrantedAuthority(role.getId())); } UserDetails details = new QuadrigaUserDetails(user.getUserName(), user.getName(), user.getPassword(), roles, user.getEmail()); return details; } }