/* * (c) Copyright 2005-2012 JAXIO, www.jaxio.com * Source code generated by Celerio, a Jaxio product * Want to use Celerio within your company? email us at info@jaxio.com * Follow us on twitter: @springfuse * Template pack-backend-sd:src/main/java/project/security/UserDetailsServiceImpl.p.vm.java */ package com.company.demo.security; import static com.google.common.collect.Lists.newArrayList; import static org.apache.commons.lang.StringUtils.isBlank; import java.util.Collection; import java.util.List; import org.apache.log4j.Logger; 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 com.company.demo.domain.Account; import com.company.demo.repository.AccountRepository; /** * An implementation of Spring Security's UserDetailsService. */ @Service("userDetailsService") public class UserDetailsServiceImpl implements UserDetailsService { private static final Logger log = Logger.getLogger(UserDetailsServiceImpl.class); private AccountRepository accountRepository; @Autowired public UserDetailsServiceImpl(AccountRepository accountRepository) { this.accountRepository = accountRepository; } @Override @Transactional public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException, DataAccessException { Account user = getUser(username); String password = user.getPassword(); Collection<GrantedAuthority> grantedAuthorities = toGrantedAuthorities(user.getRoleNames()); boolean enabled = user.getIsEnabled(); boolean userNonExpired = true; boolean credentialsNonExpired = true; boolean userNonLocked = true; return new org.springframework.security.core.userdetails.User( // username, password, // enabled, userNonExpired, // credentialsNonExpired, userNonLocked, // grantedAuthorities); } private Account getUser(String username) { if (log.isDebugEnabled()) { log.debug("Security verification for user '" + username + "'"); } if (isBlank(username)) { throw new UsernameNotFoundException("Empty username"); } Account user = accountRepository.getByUsername(username); if (user == null) { if (log.isInfoEnabled()) { log.info("User " + username + " could not be found"); } throw new UsernameNotFoundException("user " + username + " could not be found"); } return user; } private Collection<GrantedAuthority> toGrantedAuthorities(List<String> roles) { List<GrantedAuthority> result = newArrayList(); for (String role : roles) { result.add(new GrantedAuthorityImpl(role)); } return result; } }