/* vim: set ts=2 et sw=2 cindent fo=qroca: */
package com.globant.katari.sample.integration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.commons.lang.Validate;
import org.acegisecurity.userdetails.UserDetailsService;
import org.acegisecurity.userdetails.UserDetails;
import com.globant.katari.sample.user.domain.User;
/** A user details service needed by acegi, that that obtains the user
* information from the application domain.
*/
public class DomainUserDetailsService implements UserDetailsService {
/** The class logger.
*/
private static Logger log = LoggerFactory.getLogger(DomainUserDetailsService.class);
/** Obtains the user details from a user name.
*
* This is a test implementation that considers a user valid if the username
* and password are the same.
*
* @param username The user name to search. This cannot be null.
*
* @return Returns the user details needed by acegi. Specifically, an
* instance of DomainUserDetails.
*/
public UserDetails loadUserByUsername(final String username) {
log.trace("Entering loadUserByUsername");
Validate.notNull(username, "The username cannot be null");
User user = new User(username, username);
user.changePassword(username);
UserDetails userDetails = new DomainUserDetails(user);
log.trace("Leaving loadUserByUsername");
return userDetails;
}
}