package org.jbehave.example.spring.security.service;
import org.jbehave.example.spring.security.dao.UserDao;
import org.jbehave.example.spring.security.domain.Organization;
import org.jbehave.example.spring.security.domain.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
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;
@Service("userDetailsService")
public class UserDetailsServiceImpl implements UserDetailsService {
@Autowired
private UserDao userDao;
@Autowired
private OrganizationManager organizationManager;
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException, DataAccessException {
Organization org = organizationManager.getOrganization();
User user = userDao.findUserByOrganizationAndUsername(org.getId(), username);
if (user == null) {
throw new UsernameNotFoundException(username);
}
return new UserDetailsImpl(user, org.getAuthenticationPolicy());
}
}