1   /**
2    * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved.
3    *
4    * Permission is hereby granted, free of charge, to any person obtaining a copy
5    * of this software and associated documentation files (the "Software"), to deal
6    * in the Software without restriction, including without limitation the rights
7    * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8    * copies of the Software, and to permit persons to whom the Software is
9    * furnished to do so, subject to the following conditions:
10   *
11   * The above copyright notice and this permission notice shall be included in
12   * all copies or substantial portions of the Software.
13   *
14   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20   * SOFTWARE.
21   */
22  
23  package com.liferay.portlet.login.action;
24  
25  import com.liferay.portal.kernel.language.LanguageUtil;
26  import com.liferay.portal.kernel.portlet.ConfigurationAction;
27  import com.liferay.portal.kernel.servlet.SessionErrors;
28  import com.liferay.portal.kernel.servlet.SessionMessages;
29  import com.liferay.portal.kernel.util.Constants;
30  import com.liferay.portal.kernel.util.ParamUtil;
31  import com.liferay.portal.kernel.util.Validator;
32  import com.liferay.portlet.PortletPreferencesFactoryUtil;
33  
34  import javax.portlet.ActionRequest;
35  import javax.portlet.ActionResponse;
36  import javax.portlet.PortletConfig;
37  import javax.portlet.PortletPreferences;
38  import javax.portlet.RenderRequest;
39  import javax.portlet.RenderResponse;
40  
41  /**
42   * <a href="ConfigurationActionImpl.java.html"><b><i>View Source</i></b></a>
43   *
44   * @author Brian Wing Shun Chan
45   * @author Julio Camarero
46   *
47   */
48  public class ConfigurationActionImpl implements ConfigurationAction {
49  
50      public void processAction(
51              PortletConfig portletConfig, ActionRequest actionRequest,
52              ActionResponse actionResponse)
53          throws Exception {
54  
55          String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
56  
57          if (!cmd.equals(Constants.UPDATE)) {
58              return;
59          }
60  
61          String portletResource = ParamUtil.getString(
62              actionRequest, "portletResource");
63  
64          PortletPreferences preferences =
65              PortletPreferencesFactoryUtil.getPortletSetup(
66                  actionRequest, portletResource);
67  
68          String tabs1 = ParamUtil.getString(actionRequest, "tabs1");
69  
70          if (tabs1.equals("general")) {
71              updateGeneral(actionRequest, preferences);
72          }
73          else if (tabs1.equals("email-notifications")) {
74              updateEmailNotifications(actionRequest, preferences);
75          }
76  
77          SessionMessages.add(
78              actionRequest, portletConfig.getPortletName() + ".doConfigure");
79      }
80  
81      public String render(
82              PortletConfig portletConfig, RenderRequest renderRequest,
83              RenderResponse renderResponse)
84          throws Exception {
85  
86          return "/html/portlet/login/configuration.jsp";
87      }
88  
89      protected void updateEmailNotifications(
90              ActionRequest actionRequest, PortletPreferences preferences)
91          throws Exception {
92  
93          String tabs2 = ParamUtil.getString(actionRequest, "tabs2");
94  
95          if (tabs2.equals("password-changed-notification")) {
96              String languageId = LanguageUtil.getLanguageId(actionRequest);
97  
98              String emailPasswordSentEnabled = ParamUtil.getString(
99                  actionRequest, "emailPasswordSentEnabled");
100             String emailPasswordSentSubject = ParamUtil.getString(
101                 actionRequest, "emailPasswordSentSubject_" + languageId);
102             String emailPasswordSentBody = ParamUtil.getString(
103                 actionRequest, "emailPasswordSentBody_" + languageId);
104 
105             preferences.setValue(
106                 "emailPasswordSentEnabled", emailPasswordSentEnabled);
107             preferences.setValue(
108                 "emailPasswordSentSubject_" + languageId,
109                 emailPasswordSentSubject);
110             preferences.setValue(
111                 "emailPasswordSentBody_" + languageId, emailPasswordSentBody);
112 
113             preferences.store();
114         }
115         else {
116             String emailFromName = ParamUtil.getString(
117                 actionRequest, "emailFromName");
118             String emailFromAddress = ParamUtil.getString(
119                 actionRequest, "emailFromAddress");
120 
121             preferences.setValue("emailFromName", emailFromName);
122 
123             if (Validator.isNotNull(emailFromAddress) &&
124                 !Validator.isEmailAddress(emailFromAddress)) {
125 
126                 SessionErrors.add(actionRequest, "emailFromAddress");
127             }
128             else {
129                 preferences.setValue("emailFromName", emailFromName);
130                 preferences.setValue("emailFromAddress", emailFromAddress);
131 
132                 preferences.store();
133             }
134         }
135     }
136 
137     protected void updateGeneral(
138             ActionRequest actionRequest, PortletPreferences preferences)
139         throws Exception {
140 
141         String authType = ParamUtil.getString(actionRequest, "authType");
142 
143         preferences.setValue("authType", authType);
144 
145         preferences.store();
146     }
147 
148 }