001/* 002 * Copyright 2016 Anyware Services 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package org.ametys.web.usermanagement; 017 018import java.util.Map; 019 020import org.apache.avalon.framework.component.Component; 021import org.apache.avalon.framework.configuration.Configurable; 022import org.apache.avalon.framework.configuration.Configuration; 023import org.apache.avalon.framework.configuration.ConfigurationException; 024import org.apache.avalon.framework.service.ServiceException; 025import org.apache.avalon.framework.service.ServiceManager; 026import org.apache.avalon.framework.service.Serviceable; 027import org.apache.commons.lang3.StringUtils; 028import org.apache.commons.lang3.Strings; 029 030import org.ametys.core.util.I18nUtils; 031import org.ametys.runtime.i18n.I18nizableTextParameter; 032import org.ametys.runtime.i18n.I18nizableText; 033import org.ametys.runtime.plugin.component.PluginAware; 034 035/** 036 * The default user sign up configuration 037 */ 038public class DefaultUserSignUpConfiguration implements UserSignUpConfiguration, Configurable, Serviceable, PluginAware, Component 039{ 040 /** The i18n utils */ 041 protected I18nUtils _i18nUtils; 042 043 private int _tokenValidity; 044 private String _subjectKeyForSignupEmail; 045 private String _textBodyKeyForSignupEmail; 046 private String _htmlBodyKeyForSignupEmail; 047 private String _subjectKeyForInvitToSignupEmail; 048 private String _textBodyKeyForInvitToSignupEmail; 049 private String _htmlBodyKeyForInvitToSignupEmail; 050 private String _subjectKeyForSignupValidationEmail; 051 private String _textBodyKeyForSignupValidationEmail; 052 private String _htmlBodyKeyForSignupValidationEmail; 053 private String _subjectKeyForResetPwd; 054 private String _textBodyKeyForResetPwd; 055 private String _htmlBodyKeyForResetPwd; 056 057 private String _pluginName; 058 059 060 @Override 061 public void service(ServiceManager manager) throws ServiceException 062 { 063 _i18nUtils = (I18nUtils) manager.lookup(I18nUtils.ROLE); 064 } 065 066 @Override 067 public void setPluginInfo(String pluginName, String featureName, String id) 068 { 069 _pluginName = pluginName; 070 } 071 072 @Override 073 public void configure(Configuration configuration) throws ConfigurationException 074 { 075 _tokenValidity = Integer.parseInt(configuration.getChild("token-validity").getValue(null)); 076 _subjectKeyForSignupEmail = configuration.getChild("signup-email-subject").getValue(null); 077 _textBodyKeyForSignupEmail = configuration.getChild("signup-email-text-body").getValue(null); 078 _htmlBodyKeyForSignupEmail = configuration.getChild("signup-email-html-body").getValue(null); 079 _subjectKeyForInvitToSignupEmail = configuration.getChild("invit-to-signup-email-subject").getValue(null); 080 _textBodyKeyForInvitToSignupEmail = configuration.getChild("invit-to-signup-email-text-body").getValue(null); 081 _htmlBodyKeyForInvitToSignupEmail = configuration.getChild("invit-to-signup-email-html-body").getValue(null); 082 _subjectKeyForSignupValidationEmail = configuration.getChild("signup-validation-email-subject").getValue(null); 083 _textBodyKeyForSignupValidationEmail = configuration.getChild("signup-validation-email-text-body").getValue(null); 084 _htmlBodyKeyForSignupValidationEmail = configuration.getChild("signup-validation-email-html-body").getValue(null); 085 _subjectKeyForResetPwd = configuration.getChild("reset-pwd-email-subject").getValue(null); 086 _textBodyKeyForResetPwd = configuration.getChild("reset-pwd-email-text-body").getValue(null); 087 _htmlBodyKeyForResetPwd = configuration.getChild("reset-pwd-email-html-body").getValue(null); 088 } 089 090 @Override 091 public int getTokenValidity() 092 { 093 return _tokenValidity; 094 } 095 096 @Override 097 public String getSubjectForSignUpEmail (Map<String, I18nizableTextParameter> defaultI18nParams , String language) 098 { 099 if (StringUtils.isNotBlank(_subjectKeyForSignupEmail)) 100 { 101 return _i18nUtils.translate(_getI18nizableText(_subjectKeyForSignupEmail, defaultI18nParams), language); 102 } 103 104 return null; 105 } 106 107 @Override 108 public String getTextBodyForSignUpEmail(Map<String, I18nizableTextParameter> defaultI18nParams, String language) 109 { 110 if (StringUtils.isNotBlank(_textBodyKeyForSignupEmail)) 111 { 112 return _i18nUtils.translate(_getI18nizableText(_textBodyKeyForSignupEmail, defaultI18nParams), language); 113 } 114 115 return null; 116 } 117 118 @Override 119 public String getHtmlBodyForSignUpEmail(Map<String, I18nizableTextParameter> defaultI18nParams, String language) 120 { 121 if (StringUtils.isNotBlank(_htmlBodyKeyForSignupEmail)) 122 { 123 return _i18nUtils.translate(_getI18nizableText(_htmlBodyKeyForSignupEmail, defaultI18nParams), language); 124 } 125 126 return null; 127 } 128 129 public String getSubjectForInvitationToSignUpEmail(Map<String, I18nizableTextParameter> defaultI18nParams, String language) 130 { 131 if (StringUtils.isNotBlank(_subjectKeyForInvitToSignupEmail)) 132 { 133 return _i18nUtils.translate(_getI18nizableText(_subjectKeyForInvitToSignupEmail, defaultI18nParams), language); 134 } 135 136 return null; 137 } 138 139 public String getTextBodyForInvitationToSignUpEmail(Map<String, I18nizableTextParameter> defaultI18nParams, String language) 140 { 141 if (StringUtils.isNotBlank(_textBodyKeyForInvitToSignupEmail)) 142 { 143 return _i18nUtils.translate(_getI18nizableText(_textBodyKeyForInvitToSignupEmail, defaultI18nParams), language); 144 } 145 146 return null; 147 } 148 149 public String getHtmlBodyForInvitationToSignUpEmail(Map<String, I18nizableTextParameter> defaultI18nParams, String language) 150 { 151 if (StringUtils.isNotBlank(_htmlBodyKeyForInvitToSignupEmail)) 152 { 153 return _i18nUtils.translate(_getI18nizableText(_htmlBodyKeyForInvitToSignupEmail, defaultI18nParams), language); 154 } 155 156 return null; 157 } 158 159 @Override 160 public String getSubjectForSignUpValidatedEmail(Map<String, I18nizableTextParameter> defaultI18nParams, String language) 161 { 162 if (StringUtils.isNotBlank(_subjectKeyForSignupValidationEmail)) 163 { 164 return _i18nUtils.translate(_getI18nizableText(_subjectKeyForSignupValidationEmail, defaultI18nParams), language); 165 } 166 167 return null; 168 } 169 170 @Override 171 public String getTextBodyForSignUpValidatedEmail(Map<String, I18nizableTextParameter> defaultI18nParams, String language) 172 { 173 if (StringUtils.isNotBlank(_textBodyKeyForSignupValidationEmail)) 174 { 175 return _i18nUtils.translate(_getI18nizableText(_textBodyKeyForSignupValidationEmail, defaultI18nParams), language); 176 } 177 178 return null; 179 } 180 181 @Override 182 public String getHtmlBodyForSignUpValidatedEmail(Map<String, I18nizableTextParameter> defaultI18nParams, String language) 183 { 184 if (StringUtils.isNotBlank(_htmlBodyKeyForSignupValidationEmail)) 185 { 186 return _i18nUtils.translate(_getI18nizableText(_htmlBodyKeyForSignupValidationEmail, defaultI18nParams), language); 187 } 188 189 return null; 190 } 191 192 @Override 193 public String getSubjectForResetPwdEmail(Map<String, I18nizableTextParameter> defaultI18nParams, String language) 194 { 195 if (StringUtils.isNotBlank(_subjectKeyForResetPwd)) 196 { 197 return _i18nUtils.translate(_getI18nizableText(_subjectKeyForResetPwd, defaultI18nParams), language); 198 } 199 200 return null; 201 } 202 203 @Override 204 public String getTextBodyForResetPwdEmail(Map<String, I18nizableTextParameter> defaultI18nParams, String language) 205 { 206 if (StringUtils.isNotBlank(_textBodyKeyForResetPwd)) 207 { 208 return _i18nUtils.translate(_getI18nizableText(_textBodyKeyForResetPwd, defaultI18nParams), language); 209 } 210 211 return null; 212 } 213 214 @Override 215 public String getHtmlBodyForResetPwdEmail(Map<String, I18nizableTextParameter> defaultI18nParams, String language) 216 { 217 if (StringUtils.isNotBlank(_htmlBodyKeyForResetPwd)) 218 { 219 return _i18nUtils.translate(_getI18nizableText(_htmlBodyKeyForResetPwd, defaultI18nParams), language); 220 } 221 222 return null; 223 } 224 225 /** 226 * Get the {@link I18nizableText} from the configured key and i18n parameters 227 * @param fullI18nKey the configured i18n key 228 * @param i18nParams the i18n parameters 229 * @return the i18nizable text 230 */ 231 protected I18nizableText _getI18nizableText(String fullI18nKey, Map<String, I18nizableTextParameter> i18nParams) 232 { 233 String catalogue = Strings.CS.contains(fullI18nKey, ":") ? StringUtils.substringBefore(fullI18nKey, ":") : "plugin." + _pluginName; 234 String i18nKey = Strings.CS.contains(fullI18nKey, ":") ? StringUtils.substringAfter(fullI18nKey, ":") : fullI18nKey; 235 236 return new I18nizableText(catalogue, i18nKey, i18nParams); 237 } 238}