Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package my.utm.acad.ac.biz.integration.springsecurity;
- import my.utm.acad.ac.core.sys.dao.AcPrincipalDao;
- import my.utm.acad.ac.core.sys.dao.AcUserDao;
- import my.utm.acad.ac.core.sys.model.AcPrincipalRole;
- import my.utm.acad.ac.core.sys.model.AcUser;
- import org.hibernate.SessionFactory;
- import org.hibernate.classic.Session;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.dao.DataAccessException;
- import org.springframework.security.core.GrantedAuthority;
- import org.springframework.security.core.authority.GrantedAuthorityImpl;
- 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 org.springframework.transaction.annotation.Transactional;
- import java.util.HashSet;
- import java.util.Set;
- /**
- * @author team utmacad
- * @since 20/5/2015.
- */
- @Service("userDetailService")
- @Transactional
- public class AcUserDetailsService implements UserDetailsService {
- private static final Logger LOG = LoggerFactory.getLogger(AcUserDetailsService.class);
- @Autowired(required = true)
- protected SessionFactory sessionFactory;
- @Autowired(required = true)
- private AcPrincipalDao principalDao;
- @Autowired(required = true)
- private AcUserDao userDao;
- @Override
- public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException, DataAccessException {
- AcUser user = userDao.findByUsername(username);
- Session session = sessionFactory.getCurrentSession();
- if (user == null)
- throw new UsernameNotFoundException("No such user");
- return new AcUserDetails(user, loadGrantedAuthoritiesFor(user));
- }
- private Set<GrantedAuthority> loadGrantedAuthoritiesFor(AcUser user) {
- Set<GrantedAuthority> grantedAuthorities = new HashSet<GrantedAuthority>();
- for (AcPrincipalRole role : principalDao.findRoles(user)) {
- grantedAuthorities.add(new GrantedAuthorityImpl(role.getRole().name()));
- }
- LOG.info("load auth for " + user.getName() + "#" + user.getId());
- return grantedAuthorities;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement