001
014
015 package com.liferay.portlet.passwordpoliciesadmin.action;
016
017 import com.liferay.portal.DuplicatePasswordPolicyException;
018 import com.liferay.portal.NoSuchPasswordPolicyException;
019 import com.liferay.portal.PasswordPolicyNameException;
020 import com.liferay.portal.RequiredPasswordPolicyException;
021 import com.liferay.portal.kernel.servlet.SessionErrors;
022 import com.liferay.portal.kernel.util.Constants;
023 import com.liferay.portal.kernel.util.ParamUtil;
024 import com.liferay.portal.kernel.util.Validator;
025 import com.liferay.portal.model.PasswordPolicy;
026 import com.liferay.portal.security.auth.PrincipalException;
027 import com.liferay.portal.service.PasswordPolicyServiceUtil;
028 import com.liferay.portal.service.ServiceContext;
029 import com.liferay.portal.service.ServiceContextFactory;
030 import com.liferay.portal.struts.PortletAction;
031 import com.liferay.portal.util.PortalUtil;
032
033 import javax.portlet.ActionRequest;
034 import javax.portlet.ActionResponse;
035 import javax.portlet.PortletConfig;
036 import javax.portlet.RenderRequest;
037 import javax.portlet.RenderResponse;
038
039 import org.apache.struts.action.ActionForm;
040 import org.apache.struts.action.ActionForward;
041 import org.apache.struts.action.ActionMapping;
042
043
046 public class EditPasswordPolicyAction extends PortletAction {
047
048 @Override
049 public void processAction(
050 ActionMapping actionMapping, ActionForm actionForm,
051 PortletConfig portletConfig, ActionRequest actionRequest,
052 ActionResponse actionResponse)
053 throws Exception {
054
055 String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
056
057 try {
058 if (cmd.equals(Constants.ADD) || cmd.equals(Constants.UPDATE)) {
059 updatePasswordPolicy(actionRequest);
060 }
061 else if (cmd.equals(Constants.DELETE)) {
062 deletePasswordPolicy(actionRequest);
063 }
064
065 sendRedirect(actionRequest, actionResponse);
066 }
067 catch (Exception e) {
068 if (e instanceof PrincipalException) {
069 SessionErrors.add(actionRequest, e.getClass());
070
071 setForward(
072 actionRequest, "portlet.password_policies_admin.error");
073 }
074 else if (e instanceof DuplicatePasswordPolicyException ||
075 e instanceof PasswordPolicyNameException ||
076 e instanceof NoSuchPasswordPolicyException ||
077 e instanceof RequiredPasswordPolicyException) {
078
079 SessionErrors.add(actionRequest, e.getClass());
080
081 if (cmd.equals(Constants.DELETE)) {
082 String redirect = PortalUtil.escapeRedirect(
083 ParamUtil.getString(actionRequest, "redirect"));
084
085 if (Validator.isNotNull(redirect)) {
086 actionResponse.sendRedirect(redirect);
087 }
088 }
089 }
090 else {
091 throw e;
092 }
093 }
094 }
095
096 @Override
097 public ActionForward render(
098 ActionMapping actionMapping, ActionForm actionForm,
099 PortletConfig portletConfig, RenderRequest renderRequest,
100 RenderResponse renderResponse)
101 throws Exception {
102
103 try {
104 ActionUtil.getPasswordPolicy(renderRequest);
105 }
106 catch (Exception e) {
107 if (e instanceof NoSuchPasswordPolicyException ||
108 e instanceof PrincipalException) {
109
110 SessionErrors.add(renderRequest, e.getClass());
111
112 return actionMapping.findForward(
113 "portlet.password_policies_admin.error");
114 }
115 else {
116 throw e;
117 }
118 }
119
120 return actionMapping.findForward(
121 getForward(
122 renderRequest,
123 "portlet.password_policies_admin.edit_password_policy"));
124 }
125
126 protected void deletePasswordPolicy(ActionRequest actionRequest)
127 throws Exception {
128
129 long passwordPolicyId = ParamUtil.getLong(
130 actionRequest, "passwordPolicyId");
131
132 PasswordPolicyServiceUtil.deletePasswordPolicy(passwordPolicyId);
133 }
134
135 protected void updatePasswordPolicy(ActionRequest actionRequest)
136 throws Exception {
137
138 long passwordPolicyId = ParamUtil.getLong(
139 actionRequest, "passwordPolicyId");
140
141 String name = ParamUtil.getString(actionRequest, "name");
142 String description = ParamUtil.getString(actionRequest, "description");
143 boolean changeable = ParamUtil.getBoolean(actionRequest, "changeable");
144 boolean changeRequired = ParamUtil.getBoolean(
145 actionRequest, "changeRequired");
146 long minAge = ParamUtil.getLong(actionRequest, "minAge");
147 boolean checkSyntax = ParamUtil.getBoolean(
148 actionRequest, "checkSyntax");
149 boolean allowDictionaryWords = ParamUtil.getBoolean(
150 actionRequest, "allowDictionaryWords");
151 int minAlphanumeric = ParamUtil.getInteger(
152 actionRequest, "minAlphanumeric");
153 int minLength = ParamUtil.getInteger(actionRequest, "minLength");
154 int minLowerCase = ParamUtil.getInteger(actionRequest, "minLowerCase");
155 int minNumbers = ParamUtil.getInteger(actionRequest, "minNumbers");
156 int minSymbols = ParamUtil.getInteger(actionRequest, "minSymbols");
157 int minUpperCase = ParamUtil.getInteger(actionRequest, "minUpperCase");
158 String regex = ParamUtil.getString(actionRequest, "regex");
159 boolean history = ParamUtil.getBoolean(actionRequest, "history");
160 int historyCount = ParamUtil.getInteger(actionRequest, "historyCount");
161 boolean expireable = ParamUtil.getBoolean(actionRequest, "expireable");
162 long maxAge = ParamUtil.getLong(actionRequest, "maxAge");
163 long warningTime = ParamUtil.getLong(actionRequest, "warningTime");
164 int graceLimit = ParamUtil.getInteger(actionRequest, "graceLimit");
165 boolean lockout = ParamUtil.getBoolean(actionRequest, "lockout");
166 int maxFailure = ParamUtil.getInteger(actionRequest, "maxFailure");
167 long lockoutDuration = ParamUtil.getLong(
168 actionRequest, "lockoutDuration");
169 long resetFailureCount = ParamUtil.getLong(
170 actionRequest, "resetFailureCount");
171 long resetTicketMaxAge = ParamUtil.getLong(
172 actionRequest, "resetTicketMaxAge");
173
174 ServiceContext serviceContext = ServiceContextFactory.getInstance(
175 PasswordPolicy.class.getName(), actionRequest);
176
177 if (passwordPolicyId <= 0) {
178
179
180
181 PasswordPolicyServiceUtil.addPasswordPolicy(
182 name, description, changeable, changeRequired, minAge,
183 checkSyntax, allowDictionaryWords, minAlphanumeric, minLength,
184 minLowerCase, minNumbers, minSymbols, minUpperCase, regex,
185 history, historyCount, expireable, maxAge, warningTime,
186 graceLimit, lockout, maxFailure, lockoutDuration,
187 resetFailureCount, resetTicketMaxAge, serviceContext);
188 }
189 else {
190
191
192
193 PasswordPolicyServiceUtil.updatePasswordPolicy(
194 passwordPolicyId, name, description, changeable, changeRequired,
195 minAge, checkSyntax, allowDictionaryWords, minAlphanumeric,
196 minLength, minLowerCase, minNumbers, minSymbols, minUpperCase,
197 regex, history, historyCount, expireable, maxAge, warningTime,
198 graceLimit, lockout, maxFailure, lockoutDuration,
199 resetFailureCount, resetTicketMaxAge, serviceContext);
200 }
201 }
202
203 }