/** * ESUP-Portail Helpdesk - Copyright (c) 2004-2009 ESUP-Portail consortium. */ package org.esupportail.helpdesk.domain.userManagement; import java.util.Locale; import org.esupportail.commons.domain.UserPasswordManager; import org.esupportail.commons.services.authentication.AuthUtils; import org.esupportail.commons.services.logging.Logger; import org.esupportail.commons.services.logging.LoggerImpl; import org.esupportail.commons.utils.Assert; import org.esupportail.helpdesk.domain.beans.User; import org.esupportail.helpdesk.domain.reporting.PasswordSender; import org.springframework.util.StringUtils; /** * An application user manager. */ public class ApplicationUserManagerImpl extends AbstractUserManager implements ApplicationUserManager { /** * The serialization id. */ private static final long serialVersionUID = -3808299458808657525L; /** * A logger. */ private final Logger logger = new LoggerImpl(getClass()); /** * The user password manager. */ private UserPasswordManager userPasswordManager; /** * The password sender. */ private PasswordSender passwordSender; /** * Constructor. */ public ApplicationUserManagerImpl() { super(true); } /** * @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet() */ @Override public void afterPropertiesSet() { super.afterPropertiesSet(); Assert.notNull(this.userPasswordManager, "property userPasswordManager of class " + this.getClass().getName() + " can not be null"); Assert.notNull(this.passwordSender, "property passwordSender of class " + this.getClass().getName() + " can not be null"); } /** * @see org.esupportail.helpdesk.domain.userManagement.AbstractUserManager#getDatabasePrefix() */ @Override protected String getDatabasePrefix() { return USER_ID_PREFIX; } /** * @see org.esupportail.helpdesk.domain.userManagement.UserManager#getAuthType() */ @Override public String getAuthType() { return AuthUtils.APPLICATION; } /** * @see org.esupportail.helpdesk.domain.userManagement.AbstractUserManager#getUserEmail( * org.esupportail.helpdesk.domain.beans.User) */ @Override public String getUserEmail( final User user) { return user.getRealId(); } /** * @see org.esupportail.helpdesk.domain.userManagement.ApplicationUserManager#setUserInfo( * org.esupportail.helpdesk.domain.beans.User) */ @Override public boolean setUserInfo( final User user) { if (!StringUtils.hasText(user.getDisplayName())) { user.setDisplayName(user.getRealId()); return true; } return false; } /** * @see org.esupportail.helpdesk.domain.userManagement.ApplicationUserManager#createUser( * java.lang.String, java.lang.String, java.util.Locale) */ @Override public User createUser( final String realId, final String displayName, final Locale locale) { User user = newUser(realId); user.setPassword(userPasswordManager.generate()); if (displayName != null) { user.setDisplayName(displayName); } if (locale != null) { user.setLanguage(locale.toString()); } setUserInfo(user); getDaoService().addUser(user); logger.info("application user [" + user.getRealId() + "] has been added to the database"); passwordSender.sendPasswordEmail(user, locale); return user; } /** * @return the userPasswordManager */ protected UserPasswordManager getUserPasswordManager() { return userPasswordManager; } /** * @param userPasswordManager the userPasswordManager to set */ public void setUserPasswordManager(final UserPasswordManager userPasswordManager) { this.userPasswordManager = userPasswordManager; } /** * @return the passwordSender */ protected PasswordSender getPasswordSender() { return passwordSender; } /** * @param passwordSender the passwordSender to set */ public void setPasswordSender(final PasswordSender passwordSender) { this.passwordSender = passwordSender; } }