001
014
015 package com.liferay.portal.model.impl;
016
017 import com.liferay.portal.kernel.bean.AutoEscape;
018 import com.liferay.portal.kernel.exception.PortalException;
019 import com.liferay.portal.kernel.model.Account;
020 import com.liferay.portal.kernel.model.Company;
021 import com.liferay.portal.kernel.model.CompanyConstants;
022 import com.liferay.portal.kernel.model.Group;
023 import com.liferay.portal.kernel.model.LayoutSet;
024 import com.liferay.portal.kernel.model.User;
025 import com.liferay.portal.kernel.model.VirtualHost;
026 import com.liferay.portal.kernel.model.cache.CacheField;
027 import com.liferay.portal.kernel.service.AccountLocalServiceUtil;
028 import com.liferay.portal.kernel.service.GroupLocalServiceUtil;
029 import com.liferay.portal.kernel.service.LayoutSetLocalServiceUtil;
030 import com.liferay.portal.kernel.service.UserLocalServiceUtil;
031 import com.liferay.portal.kernel.service.VirtualHostLocalServiceUtil;
032 import com.liferay.portal.kernel.util.CharPool;
033 import com.liferay.portal.kernel.util.GetterUtil;
034 import com.liferay.portal.kernel.util.PortalUtil;
035 import com.liferay.portal.kernel.util.PropsKeys;
036 import com.liferay.portal.kernel.util.StringPool;
037 import com.liferay.portal.kernel.util.StringUtil;
038 import com.liferay.portal.kernel.util.Validator;
039 import com.liferay.portal.util.PrefsPropsUtil;
040 import com.liferay.portal.util.PropsUtil;
041 import com.liferay.portal.util.PropsValues;
042 import com.liferay.util.Encryptor;
043
044 import java.io.Serializable;
045
046 import java.security.Key;
047
048 import java.util.Locale;
049 import java.util.TimeZone;
050
051 import javax.portlet.PortletPreferences;
052
053
056 public class CompanyImpl extends CompanyBaseImpl {
057
058 @Override
059 public int compareTo(Company company) {
060 String webId1 = getWebId();
061 String webId2 = company.getWebId();
062
063 if (webId1.equals(PropsValues.COMPANY_DEFAULT_WEB_ID)) {
064 return -1;
065 }
066 else if (webId2.equals(PropsValues.COMPANY_DEFAULT_WEB_ID)) {
067 return 1;
068 }
069 else {
070 return webId1.compareTo(webId2);
071 }
072 }
073
074 @Override
075 public Account getAccount() throws PortalException {
076 return AccountLocalServiceUtil.getAccount(
077 getCompanyId(), getAccountId());
078 }
079
080 @Override
081 public String getAdminName() {
082 return "Administrator";
083 }
084
085 @Override
086 public String getAuthType() {
087 CompanySecurityBag companySecurityBag = getCompanySecurityBag();
088
089 return companySecurityBag._authType;
090 }
091
092 @Override
093 public CompanySecurityBag getCompanySecurityBag() {
094 if (_companySecurityBag == null) {
095 _companySecurityBag = new CompanySecurityBag(this);
096 }
097
098 return _companySecurityBag;
099 }
100
101 @Override
102 public User getDefaultUser() throws PortalException {
103 return UserLocalServiceUtil.getDefaultUser(getCompanyId());
104 }
105
106 @Override
107 public String getDefaultWebId() {
108 return PropsValues.COMPANY_DEFAULT_WEB_ID;
109 }
110
111 @Override
112 public String getEmailAddress() {
113
114
115
116 return "admin@" + getMx();
117 }
118
119 @Override
120 public Group getGroup() throws PortalException {
121 if (getCompanyId() > CompanyConstants.SYSTEM) {
122 return GroupLocalServiceUtil.getCompanyGroup(getCompanyId());
123 }
124
125 return new GroupImpl();
126 }
127
128 @Override
129 public long getGroupId() throws PortalException {
130 Group group = getGroup();
131
132 return group.getGroupId();
133 }
134
135 @Override
136 public Key getKeyObj() {
137 if (_keyObj == null) {
138 String key = getKey();
139
140 if (Validator.isNotNull(key)) {
141 _keyObj = Encryptor.deserializeKey(key);
142 }
143 }
144
145 return _keyObj;
146 }
147
148 @Override
149 public Locale getLocale() throws PortalException {
150 return getDefaultUser().getLocale();
151 }
152
153 @AutoEscape
154 @Override
155 public String getName() throws PortalException {
156 return getAccount().getName();
157 }
158
159 @Override
160 public String getPortalURL(long groupId) throws PortalException {
161 int portalPort = PortalUtil.getPortalServerPort(false);
162
163 String portalURL = PortalUtil.getPortalURL(
164 getVirtualHostname(), portalPort, false);
165
166 if (groupId <= 0) {
167 return portalURL;
168 }
169
170 Group group = GroupLocalServiceUtil.getGroup(groupId);
171
172 if (group.hasPublicLayouts()) {
173 LayoutSet layoutSet = LayoutSetLocalServiceUtil.getLayoutSet(
174 groupId, false);
175
176 if (Validator.isNotNull(layoutSet.getVirtualHostname())) {
177 portalURL = PortalUtil.getPortalURL(
178 layoutSet.getVirtualHostname(), portalPort, false);
179 }
180 }
181 else if (group.hasPrivateLayouts()) {
182 LayoutSet layoutSet = LayoutSetLocalServiceUtil.getLayoutSet(
183 groupId, true);
184
185 if (Validator.isNotNull(layoutSet.getVirtualHostname())) {
186 portalURL = PortalUtil.getPortalURL(
187 layoutSet.getVirtualHostname(), portalPort, false);
188 }
189 }
190
191 return portalURL;
192 }
193
194 @Override
195 public String getShortName() throws PortalException {
196 return getName();
197 }
198
199 @Override
200 public TimeZone getTimeZone() throws PortalException {
201 return getDefaultUser().getTimeZone();
202 }
203
204 @Override
205 public String getVirtualHostname() {
206 if (_virtualHostname != null) {
207 return _virtualHostname;
208 }
209
210 VirtualHost virtualHost = null;
211
212 try {
213 virtualHost = VirtualHostLocalServiceUtil.fetchVirtualHost(
214 getCompanyId(), 0);
215 }
216 catch (Exception e) {
217 }
218
219 if (virtualHost == null) {
220 return StringPool.BLANK;
221 }
222
223 _virtualHostname = virtualHost.getHostname();
224
225 return _virtualHostname;
226 }
227
228 @Override
229 public boolean hasCompanyMx(String emailAddress) {
230 emailAddress = StringUtil.toLowerCase(emailAddress.trim());
231
232 int pos = emailAddress.indexOf(CharPool.AT);
233
234 if (pos == -1) {
235 return false;
236 }
237
238 String mx = emailAddress.substring(pos + 1);
239
240 if (mx.equals(getMx())) {
241 return true;
242 }
243
244 String[] mailHostNames = PrefsPropsUtil.getStringArray(
245 getCompanyId(), PropsKeys.ADMIN_MAIL_HOST_NAMES,
246 StringPool.NEW_LINE, PropsValues.ADMIN_MAIL_HOST_NAMES);
247
248 for (int i = 0; i < mailHostNames.length; i++) {
249 if (StringUtil.equalsIgnoreCase(mx, mailHostNames[i])) {
250 return true;
251 }
252 }
253
254 return false;
255 }
256
257 @Override
258 public boolean isAutoLogin() {
259 CompanySecurityBag companySecurityBag = getCompanySecurityBag();
260
261 return companySecurityBag._autoLogin;
262 }
263
264 @Override
265 public boolean isSendPassword() {
266 CompanySecurityBag companySecurityBag = getCompanySecurityBag();
267
268 return companySecurityBag._sendPassword;
269 }
270
271 @Override
272 public boolean isSendPasswordResetLink() {
273 return PrefsPropsUtil.getBoolean(
274 getCompanyId(), PropsKeys.COMPANY_SECURITY_SEND_PASSWORD_RESET_LINK,
275 PropsValues.COMPANY_SECURITY_SEND_PASSWORD_RESET_LINK);
276 }
277
278 @Override
279 public boolean isSiteLogo() {
280 CompanySecurityBag companySecurityBag = getCompanySecurityBag();
281
282 return companySecurityBag._siteLogo;
283 }
284
285 @Override
286 public boolean isStrangers() {
287 CompanySecurityBag companySecurityBag = getCompanySecurityBag();
288
289 return companySecurityBag._strangers;
290 }
291
292 @Override
293 public boolean isStrangersVerify() {
294 CompanySecurityBag companySecurityBag = getCompanySecurityBag();
295
296 return companySecurityBag._strangersVerify;
297 }
298
299 @Override
300 public boolean isStrangersWithMx() {
301 CompanySecurityBag companySecurityBag = getCompanySecurityBag();
302
303 return companySecurityBag._strangersWithMx;
304 }
305
306 public void setCompanySecurityBag(Object companySecurityBag) {
307 _companySecurityBag = (CompanySecurityBag)companySecurityBag;
308 }
309
310 @Override
311 public void setKey(String key) {
312 _keyObj = null;
313
314 super.setKey(key);
315 }
316
317 @Override
318 public void setKeyObj(Key keyObj) {
319 _keyObj = keyObj;
320 }
321
322 @Override
323 public void setVirtualHostname(String virtualHostname) {
324 _virtualHostname = virtualHostname;
325 }
326
327 public static class CompanySecurityBag implements Serializable {
328
329 private CompanySecurityBag(Company company) {
330 PortletPreferences preferences = PrefsPropsUtil.getPreferences(
331 company.getCompanyId(), true);
332
333 _authType = _getPrefsPropsString(
334 preferences, company, PropsKeys.COMPANY_SECURITY_AUTH_TYPE,
335 PropsValues.COMPANY_SECURITY_AUTH_TYPE);
336 _autoLogin = _getPrefsPropsBoolean(
337 preferences, company, PropsKeys.COMPANY_SECURITY_AUTO_LOGIN,
338 PropsValues.COMPANY_SECURITY_AUTO_LOGIN);
339 _sendPassword = _getPrefsPropsBoolean(
340 preferences, company, PropsKeys.COMPANY_SECURITY_SEND_PASSWORD,
341 PropsValues.COMPANY_SECURITY_SEND_PASSWORD);
342 _siteLogo = _getPrefsPropsBoolean(
343 preferences, company, PropsKeys.COMPANY_SECURITY_SITE_LOGO,
344 PropsValues.COMPANY_SECURITY_SITE_LOGO);
345 _strangers = _getPrefsPropsBoolean(
346 preferences, company, PropsKeys.COMPANY_SECURITY_STRANGERS,
347 PropsValues.COMPANY_SECURITY_STRANGERS);
348 _strangersVerify = _getPrefsPropsBoolean(
349 preferences, company,
350 PropsKeys.COMPANY_SECURITY_STRANGERS_VERIFY,
351 PropsValues.COMPANY_SECURITY_STRANGERS_VERIFY);
352 _strangersWithMx = _getPrefsPropsBoolean(
353 preferences, company,
354 PropsKeys.COMPANY_SECURITY_STRANGERS_WITH_MX,
355 PropsValues.COMPANY_SECURITY_STRANGERS_WITH_MX);
356 }
357
358 private final String _authType;
359 private final boolean _autoLogin;
360 private final boolean _sendPassword;
361 private final boolean _siteLogo;
362 private final boolean _strangers;
363 private final boolean _strangersVerify;
364 private final boolean _strangersWithMx;
365
366 }
367
368 private static boolean _getPrefsPropsBoolean(
369 PortletPreferences portletPreferences, Company company, String name,
370 boolean defaultValue) {
371
372 String value = portletPreferences.getValue(
373 name, PropsUtil.get(company, name));
374
375 if (value != null) {
376 return GetterUtil.getBoolean(value);
377 }
378
379 return defaultValue;
380 }
381
382 private static String _getPrefsPropsString(
383 PortletPreferences portletPreferences, Company company, String name,
384 String defaultValue) {
385
386 String value = portletPreferences.getValue(
387 name, PropsUtil.get(company, name));
388
389 if (value != null) {
390 return value;
391 }
392
393 return defaultValue;
394 }
395
396 @CacheField
397 private CompanySecurityBag _companySecurityBag;
398
399 @CacheField(propagateToInterface = true)
400 private Key _keyObj;
401
402 @CacheField(propagateToInterface = true)
403 private String _virtualHostname;
404
405 }