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