001
014
015 package com.liferay.portlet.portalsettings.action;
016
017 import com.liferay.portal.AccountNameException;
018 import com.liferay.portal.AddressCityException;
019 import com.liferay.portal.AddressStreetException;
020 import com.liferay.portal.AddressZipException;
021 import com.liferay.portal.CompanyMxException;
022 import com.liferay.portal.CompanyVirtualHostException;
023 import com.liferay.portal.CompanyWebIdException;
024 import com.liferay.portal.EmailAddressException;
025 import com.liferay.portal.LocaleException;
026 import com.liferay.portal.NoSuchCountryException;
027 import com.liferay.portal.NoSuchListTypeException;
028 import com.liferay.portal.NoSuchRegionException;
029 import com.liferay.portal.PhoneNumberException;
030 import com.liferay.portal.WebsiteURLException;
031 import com.liferay.portal.kernel.repository.model.FileEntry;
032 import com.liferay.portal.kernel.servlet.SessionErrors;
033 import com.liferay.portal.kernel.util.Constants;
034 import com.liferay.portal.kernel.util.FileUtil;
035 import com.liferay.portal.kernel.util.ParamUtil;
036 import com.liferay.portal.kernel.util.PropertiesParamUtil;
037 import com.liferay.portal.kernel.util.PropsKeys;
038 import com.liferay.portal.kernel.util.UnicodeProperties;
039 import com.liferay.portal.kernel.util.Validator;
040 import com.liferay.portal.model.Address;
041 import com.liferay.portal.model.EmailAddress;
042 import com.liferay.portal.model.Phone;
043 import com.liferay.portal.model.Website;
044 import com.liferay.portal.security.auth.PrincipalException;
045 import com.liferay.portal.service.CompanyServiceUtil;
046 import com.liferay.portal.struts.PortletAction;
047 import com.liferay.portal.util.PortalUtil;
048 import com.liferay.portal.util.PropsValues;
049 import com.liferay.portlet.documentlibrary.service.DLAppLocalServiceUtil;
050 import com.liferay.portlet.usersadmin.util.UsersAdminUtil;
051
052 import java.util.List;
053
054 import javax.portlet.ActionRequest;
055 import javax.portlet.ActionResponse;
056 import javax.portlet.PortletConfig;
057 import javax.portlet.RenderRequest;
058 import javax.portlet.RenderResponse;
059
060 import org.apache.struts.action.ActionForm;
061 import org.apache.struts.action.ActionForward;
062 import org.apache.struts.action.ActionMapping;
063
064
068 public class EditCompanyAction extends PortletAction {
069
070 @Override
071 public void processAction(
072 ActionMapping actionMapping, ActionForm actionForm,
073 PortletConfig portletConfig, ActionRequest actionRequest,
074 ActionResponse actionResponse)
075 throws Exception {
076
077 String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
078
079 try {
080 if (cmd.equals(Constants.ADD) || cmd.equals(Constants.UPDATE)) {
081 validateCAS(actionRequest);
082 validateLDAP(actionRequest);
083 validateSocialInteractions(actionRequest);
084
085 if (!SessionErrors.isEmpty(actionRequest)) {
086 setForward(
087 actionRequest, "portlet.portal_settings.edit_company");
088 }
089 else {
090 updateCompany(actionRequest);
091
092 sendRedirect(actionRequest, actionResponse);
093 }
094 }
095 }
096 catch (Exception e) {
097 if (e instanceof PrincipalException) {
098 SessionErrors.add(actionRequest, e.getClass());
099
100 setForward(actionRequest, "portlet.portal_settings.error");
101 }
102 else if (e instanceof AddressCityException ||
103 e instanceof AccountNameException ||
104 e instanceof AddressStreetException ||
105 e instanceof AddressZipException ||
106 e instanceof CompanyMxException ||
107 e instanceof CompanyVirtualHostException ||
108 e instanceof CompanyWebIdException ||
109 e instanceof EmailAddressException ||
110 e instanceof LocaleException ||
111 e instanceof NoSuchCountryException ||
112 e instanceof NoSuchListTypeException ||
113 e instanceof NoSuchRegionException ||
114 e instanceof PhoneNumberException ||
115 e instanceof WebsiteURLException) {
116
117 if (e instanceof NoSuchListTypeException) {
118 NoSuchListTypeException nslte = (NoSuchListTypeException)e;
119
120 SessionErrors.add(
121 actionRequest,
122 e.getClass().getName() + nslte.getType());
123 }
124 else {
125 SessionErrors.add(actionRequest, e.getClass(), e);
126 }
127
128 setForward(
129 actionRequest, "portlet.portal_settings.edit_company");
130 }
131 else {
132 throw e;
133 }
134 }
135 }
136
137 @Override
138 public ActionForward render(
139 ActionMapping actionMapping, ActionForm actionForm,
140 PortletConfig portletConfig, RenderRequest renderRequest,
141 RenderResponse renderResponse)
142 throws Exception {
143
144 return actionMapping.findForward(
145 getForward(renderRequest, "portlet.portal_settings.edit_company"));
146 }
147
148 protected void updateCompany(ActionRequest actionRequest) throws Exception {
149 long companyId = PortalUtil.getCompanyId(actionRequest);
150
151 String virtualHostname = ParamUtil.getString(
152 actionRequest, "virtualHostname");
153 String mx = ParamUtil.getString(actionRequest, "mx");
154 String homeURL = ParamUtil.getString(actionRequest, "homeURL");
155 boolean deleteLogo = ParamUtil.getBoolean(actionRequest, "deleteLogo");
156
157 byte[] logoBytes = null;
158
159 long fileEntryId = ParamUtil.getLong(actionRequest, "fileEntryId");
160
161 if (fileEntryId > 0) {
162 FileEntry fileEntry = DLAppLocalServiceUtil.getFileEntry(
163 fileEntryId);
164
165 logoBytes = FileUtil.getBytes(fileEntry.getContentStream());
166 }
167
168 String name = ParamUtil.getString(actionRequest, "name");
169 String legalName = ParamUtil.getString(actionRequest, "legalName");
170 String legalId = ParamUtil.getString(actionRequest, "legalId");
171 String legalType = ParamUtil.getString(actionRequest, "legalType");
172 String sicCode = ParamUtil.getString(actionRequest, "sicCode");
173 String tickerSymbol = ParamUtil.getString(
174 actionRequest, "tickerSymbol");
175 String industry = ParamUtil.getString(actionRequest, "industry");
176 String type = ParamUtil.getString(actionRequest, "type");
177 String size = ParamUtil.getString(actionRequest, "size");
178 String languageId = ParamUtil.getString(actionRequest, "languageId");
179 String timeZoneId = ParamUtil.getString(actionRequest, "timeZoneId");
180 List<Address> addresses = UsersAdminUtil.getAddresses(actionRequest);
181 List<EmailAddress> emailAddresses = UsersAdminUtil.getEmailAddresses(
182 actionRequest);
183 List<Phone> phones = UsersAdminUtil.getPhones(actionRequest);
184 List<Website> websites = UsersAdminUtil.getWebsites(actionRequest);
185 UnicodeProperties properties = PropertiesParamUtil.getProperties(
186 actionRequest, "settings--");
187
188 CompanyServiceUtil.updateCompany(
189 companyId, virtualHostname, mx, homeURL, !deleteLogo, logoBytes,
190 name, legalName, legalId, legalType, sicCode, tickerSymbol,
191 industry, type, size, languageId, timeZoneId, addresses,
192 emailAddresses, phones, websites, properties);
193
194 PortalUtil.resetCDNHosts();
195 }
196
197 protected void validateCAS(ActionRequest actionRequest) {
198 boolean casEnabled = ParamUtil.getBoolean(
199 actionRequest, "settings--" + PropsKeys.CAS_AUTH_ENABLED + "--");
200
201 if (!casEnabled) {
202 return;
203 }
204
205 String casLoginURL = ParamUtil.getString(
206 actionRequest, "settings--" + PropsKeys.CAS_LOGIN_URL + "--");
207 String casLogoutURL = ParamUtil.getString(
208 actionRequest, "settings--" + PropsKeys.CAS_LOGOUT_URL + "--");
209 String casServerName = ParamUtil.getString(
210 actionRequest, "settings--" + PropsKeys.CAS_SERVER_NAME + "--");
211 String casServerURL = ParamUtil.getString(
212 actionRequest, "settings--" + PropsKeys.CAS_SERVER_URL + "--");
213 String casServiceURL = ParamUtil.getString(
214 actionRequest, "settings--" + PropsKeys.CAS_SERVICE_URL + "--");
215 String casNoSuchUserRedirectURL = ParamUtil.getString(
216 actionRequest,
217 "settings--" + PropsKeys.CAS_NO_SUCH_USER_REDIRECT_URL + "--");
218
219 if (!Validator.isUrl(casLoginURL)) {
220 SessionErrors.add(actionRequest, "casLoginURLInvalid");
221 }
222
223 if (!Validator.isUrl(casLogoutURL)) {
224 SessionErrors.add(actionRequest, "casLogoutURLInvalid");
225 }
226
227 if (Validator.isNull(casServerName)) {
228 SessionErrors.add(actionRequest, "casServerNameInvalid");
229 }
230
231 if (!Validator.isUrl(casServerURL)) {
232 SessionErrors.add(actionRequest, "casServerURLInvalid");
233 }
234
235 if (Validator.isNotNull(casServiceURL) &&
236 !Validator.isUrl(casServiceURL)) {
237
238 SessionErrors.add(actionRequest, "casServiceURLInvalid");
239 }
240
241 if (Validator.isNotNull(casNoSuchUserRedirectURL) &&
242 !Validator.isUrl(casNoSuchUserRedirectURL)) {
243
244 SessionErrors.add(actionRequest, "casNoSuchUserURLInvalid");
245 }
246 }
247
248 protected void validateLDAP(ActionRequest actionRequest) {
249 if (!PropsValues.LDAP_IMPORT_USER_PASSWORD_AUTOGENERATED) {
250 return;
251 }
252
253 boolean ldapExportEnabled = ParamUtil.getBoolean(
254 actionRequest, "settings--" + PropsKeys.LDAP_EXPORT_ENABLED + "--");
255 boolean ldapImportEnabled = ParamUtil.getBoolean(
256 actionRequest, "settings--" + PropsKeys.LDAP_IMPORT_ENABLED + "--");
257
258 if (ldapExportEnabled && ldapImportEnabled) {
259 SessionErrors.add(
260 actionRequest, "ldapExportAndImportOnPasswordAutogeneration");
261 }
262 }
263
264 protected void validateSocialInteractions(ActionRequest actionRequest) {
265 boolean socialInteractionsEnabled = ParamUtil.getBoolean(
266 actionRequest, "settings--socialInteractionsEnabled--");
267
268 if (!socialInteractionsEnabled) {
269 return;
270 }
271
272 boolean socialInteractionsAnyUserEnabled = ParamUtil.getBoolean(
273 actionRequest, "settings--socialInteractionsAnyUserEnabled--");
274
275 if (socialInteractionsAnyUserEnabled) {
276 return;
277 }
278
279 boolean socialInteractionsSocialRelationTypesEnabled =
280 ParamUtil.getBoolean(
281 actionRequest,
282 "settings--socialInteractionsSocialRelationTypesEnabled--");
283 String socialInteractionsSocialRelationTypes = ParamUtil.getString(
284 actionRequest, "settings--socialInteractionsSocialRelationTypes--");
285
286 if (socialInteractionsSocialRelationTypesEnabled &&
287 Validator.isNull(socialInteractionsSocialRelationTypes)) {
288
289 SessionErrors.add(
290 actionRequest, "socialInteractionsSocialRelationTypes");
291 }
292
293 boolean socialInteractionsSitesEnabled = ParamUtil.getBoolean(
294 actionRequest, "settings--socialInteractionsSitesEnabled--");
295
296 if (!socialInteractionsSocialRelationTypesEnabled &&
297 !socialInteractionsSitesEnabled) {
298
299 SessionErrors.add(actionRequest, "socialInteractionsInvalid");
300 }
301 }
302
303 }