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