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 mapping, ActionForm form, PortletConfig portletConfig,
051 ActionRequest actionRequest, ActionResponse actionResponse)
052 throws Exception {
053
054 String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
055
056 try {
057 if (cmd.equals(Constants.ADD) || cmd.equals(Constants.UPDATE)) {
058 updatePasswordPolicy(actionRequest);
059 }
060 else if (cmd.equals(Constants.DELETE)) {
061 deletePasswordPolicy(actionRequest);
062 }
063
064 sendRedirect(actionRequest, actionResponse);
065 }
066 catch (Exception e) {
067 if (e instanceof PrincipalException) {
068 SessionErrors.add(actionRequest, e.getClass());
069
070 setForward(
071 actionRequest, "portlet.password_policies_admin.error");
072 }
073 else if (e instanceof DuplicatePasswordPolicyException ||
074 e instanceof PasswordPolicyNameException ||
075 e instanceof NoSuchPasswordPolicyException ||
076 e instanceof RequiredPasswordPolicyException) {
077
078 SessionErrors.add(actionRequest, e.getClass());
079
080 if (cmd.equals(Constants.DELETE)) {
081 String redirect = PortalUtil.escapeRedirect(
082 ParamUtil.getString(actionRequest, "redirect"));
083
084 if (Validator.isNotNull(redirect)) {
085 actionResponse.sendRedirect(redirect);
086 }
087 }
088 }
089 else {
090 throw e;
091 }
092 }
093 }
094
095 @Override
096 public ActionForward render(
097 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
098 RenderRequest renderRequest, RenderResponse renderResponse)
099 throws Exception {
100
101 try {
102 ActionUtil.getPasswordPolicy(renderRequest);
103 }
104 catch (Exception e) {
105 if (e instanceof NoSuchPasswordPolicyException ||
106 e instanceof PrincipalException) {
107
108 SessionErrors.add(renderRequest, e.getClass());
109
110 return mapping.findForward(
111 "portlet.password_policies_admin.error");
112 }
113 else {
114 throw e;
115 }
116 }
117
118 return mapping.findForward(
119 getForward(
120 renderRequest,
121 "portlet.password_policies_admin.edit_password_policy"));
122 }
123
124 protected void deletePasswordPolicy(ActionRequest actionRequest)
125 throws Exception {
126
127 long passwordPolicyId = ParamUtil.getLong(
128 actionRequest, "passwordPolicyId");
129
130 PasswordPolicyServiceUtil.deletePasswordPolicy(passwordPolicyId);
131 }
132
133 protected void updatePasswordPolicy(ActionRequest actionRequest)
134 throws Exception {
135
136 long passwordPolicyId = ParamUtil.getLong(
137 actionRequest, "passwordPolicyId");
138
139 String name = ParamUtil.getString(actionRequest, "name");
140 String description = ParamUtil.getString(actionRequest, "description");
141 boolean changeable = ParamUtil.getBoolean(actionRequest, "changeable");
142 boolean changeRequired = ParamUtil.getBoolean(
143 actionRequest, "changeRequired");
144 long minAge = ParamUtil.getLong(actionRequest, "minAge");
145 boolean checkSyntax = ParamUtil.getBoolean(
146 actionRequest, "checkSyntax");
147 boolean allowDictionaryWords = ParamUtil.getBoolean(
148 actionRequest, "allowDictionaryWords");
149 int minAlphanumeric = ParamUtil.getInteger(
150 actionRequest, "minAlphanumeric");
151 int minLength = ParamUtil.getInteger(actionRequest, "minLength");
152 int minLowerCase = ParamUtil.getInteger(actionRequest, "minLowerCase");
153 int minNumbers = ParamUtil.getInteger(actionRequest, "minNumbers");
154 int minSymbols = ParamUtil.getInteger(actionRequest, "minSymbols");
155 int minUpperCase = ParamUtil.getInteger(actionRequest, "minUpperCase");
156 String regex = ParamUtil.getString(actionRequest, "regex");
157 boolean history = ParamUtil.getBoolean(actionRequest, "history");
158 int historyCount = ParamUtil.getInteger(actionRequest, "historyCount");
159 boolean expireable = ParamUtil.getBoolean(actionRequest, "expireable");
160 long maxAge = ParamUtil.getLong(actionRequest, "maxAge");
161 long warningTime = ParamUtil.getLong(actionRequest, "warningTime");
162 int graceLimit = ParamUtil.getInteger(actionRequest, "graceLimit");
163 boolean lockout = ParamUtil.getBoolean(actionRequest, "lockout");
164 int maxFailure = ParamUtil.getInteger(actionRequest, "maxFailure");
165 long lockoutDuration = ParamUtil.getLong(
166 actionRequest, "lockoutDuration");
167 long resetFailureCount = ParamUtil.getLong(
168 actionRequest, "resetFailureCount");
169 long resetTicketMaxAge = ParamUtil.getLong(
170 actionRequest, "resetTicketMaxAge");
171
172 ServiceContext serviceContext = ServiceContextFactory.getInstance(
173 PasswordPolicy.class.getName(), actionRequest);
174
175 if (passwordPolicyId <= 0) {
176
177
178
179 PasswordPolicyServiceUtil.addPasswordPolicy(
180 name, description, changeable, changeRequired, minAge,
181 checkSyntax, allowDictionaryWords, minAlphanumeric, minLength,
182 minLowerCase, minNumbers, minSymbols, minUpperCase, regex,
183 history, historyCount, expireable, maxAge, warningTime,
184 graceLimit, lockout, maxFailure, lockoutDuration,
185 resetFailureCount, resetTicketMaxAge, serviceContext);
186 }
187 else {
188
189
190
191 PasswordPolicyServiceUtil.updatePasswordPolicy(
192 passwordPolicyId, name, description, changeable, changeRequired,
193 minAge, checkSyntax, allowDictionaryWords, minAlphanumeric,
194 minLength, minLowerCase, minNumbers, minSymbols, minUpperCase,
195 regex, history, historyCount, expireable, maxAge, warningTime,
196 graceLimit, lockout, maxFailure, lockoutDuration,
197 resetFailureCount, resetTicketMaxAge, serviceContext);
198 }
199 }
200
201 }