/** * ESUP-Portail Helpdesk - Copyright (c) 2004-2009 ESUP-Portail consortium. */ package org.esupportail.helpdesk.domain.userManagement; import java.io.UnsupportedEncodingException; import java.sql.Timestamp; import java.util.List; import java.util.Locale; import java.util.Map; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.servlet.http.Cookie; import org.esupportail.commons.services.i18n.I18nService; import org.esupportail.commons.utils.Assert; import org.esupportail.commons.utils.Base64; import org.esupportail.helpdesk.dao.DaoService; import org.esupportail.helpdesk.domain.beans.User; import org.springframework.beans.factory.InitializingBean; /** * An abstract user manager. */ @SuppressWarnings("serial") public abstract class AbstractUserManager implements UserManager, InitializingBean { /** * Magic number. */ private static final int CONST_1000 = 1000; /** * {@link DaoService}. */ private DaoService daoService; /** * {@link I18nService}. */ private I18nService i18nService; /** * True if the manager uses auth secrets. */ private boolean useAuthSecrets; /** * Constructor. * @param useAuthSecrets */ public AbstractUserManager(final boolean useAuthSecrets) { super(); this.useAuthSecrets = useAuthSecrets; } /** * @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet() */ @Override public void afterPropertiesSet() { Assert.notNull(this.daoService, "property daoService of class " + this.getClass().getName() + " can not be null"); Assert.notNull(this.i18nService, "property i18nService of class " + this.getClass().getName() + " can not be null"); } /** * @see org.esupportail.helpdesk.domain.userManagement.UserManager#getDatabaseId(java.lang.String) */ @Override public String getDatabaseId(final String realId) { return getDatabasePrefix() + realId; } /** * @return the database prefix */ protected abstract String getDatabasePrefix(); /** * @param realId * @return a new user. */ protected User newUser( final String realId) { return new User(getDatabaseId(realId), getAuthType(), realId); } /** * @see org.esupportail.helpdesk.domain.userManagement.UserManager#getUserLocale( * org.esupportail.helpdesk.domain.beans.User) */ @Override public Locale getUserLocale(final User user) { if (user != null && user.getLanguage() != null) { return new Locale(user.getLanguage()); } return i18nService.getDefaultLocale(); } /** * @see org.esupportail.helpdesk.domain.userManagement.UserManager#getUserEmail( * org.esupportail.helpdesk.domain.beans.User) */ @Override public String getUserEmail( @SuppressWarnings("unused") final User user) { return null; } /** * @see org.esupportail.helpdesk.domain.userManagement.UserManager#getUserEmails( * org.esupportail.helpdesk.domain.beans.User) */ @Override public List<String> getUserEmails( @SuppressWarnings("unused") final User user) { return null; } /** * @param user * @return the internet address of a user. */ protected InternetAddress getUserInternetAddress(final User user) { String email = getUserEmail(user); if (email == null) { return null; } try { return new InternetAddress(email, user.getDisplayName()); } catch (UnsupportedEncodingException e) { try { return new InternetAddress(email); } catch (AddressException e1) { return null; } } } /** * @see org.esupportail.helpdesk.domain.userManagement.UserManager#getLdapAttributes( * org.esupportail.helpdesk.domain.beans.User) */ @Override public Map<String, List<String>> getLdapAttributes( @SuppressWarnings("unused") final User user) { return null; } /** * @see org.esupportail.helpdesk.domain.userManagement.UserManager#getPortalAttributes( * org.esupportail.helpdesk.domain.beans.User) */ @Override public Map<String, List<String>> getPortalAttributes( @SuppressWarnings("unused") final User user) { return null; } /** * @see org.esupportail.helpdesk.domain.userManagement.UserManager#isMemberOfPortalGroup( * org.esupportail.helpdesk.domain.beans.User, java.lang.String) */ @Override public boolean isMemberOfPortalGroup( @SuppressWarnings("unused") final User user, @SuppressWarnings("unused") final String groupId) { return false; } /** * @see org.esupportail.helpdesk.domain.userManagement.UserManager#isMemberOfPortalDistinguishedGroup( * org.esupportail.helpdesk.domain.beans.User, java.lang.String) */ @Override public boolean isMemberOfPortalDistinguishedGroup( @SuppressWarnings("unused") final User user, @SuppressWarnings("unused") final String groupName) { return false; } /** * @see org.esupportail.helpdesk.domain.userManagement.UserManager#renewAuthSecret( * org.esupportail.helpdesk.domain.beans.User, java.lang.String, int) */ @Override public Cookie renewAuthSecret( final User user, final String authCookieName, final int authCookieExpiry) { if (!useAuthSecrets) { return null; } String str = user.getRealId() + "-" + Base64.encodeBytes(Double.toString(Math.random()).getBytes()); user.setAuthSecret(str); user.setAuthLimit(new Timestamp(System.currentTimeMillis() + (CONST_1000 * authCookieExpiry))); daoService.updateUser(user); Cookie cookie = new Cookie(authCookieName, str); cookie.setMaxAge(authCookieExpiry); return cookie; } /** * @see org.esupportail.helpdesk.domain.userManagement.UserManager#removeAuthSecret( * org.esupportail.helpdesk.domain.beans.User, java.lang.String) */ @Override public Cookie removeAuthSecret( final User user, final String authCookieName) { if (!useAuthSecrets) { return null; } user.setAuthSecret(null); user.setAuthLimit(null); daoService.updateUser(user); Cookie cookie = new Cookie(authCookieName, ""); cookie.setMaxAge(0); return cookie; } /** * @return the daoService */ protected DaoService getDaoService() { return daoService; } /** * @param daoService the daoService to set */ public void setDaoService(final DaoService daoService) { this.daoService = daoService; } /** * @return the i18nService */ protected I18nService getI18nService() { return i18nService; } /** * @param service the i18nService to set */ public void setI18nService(final I18nService service) { i18nService = service; } }