1
22
23 package com.liferay.portal.action;
24
25 import com.liferay.portal.NoSuchUserException;
26 import com.liferay.portal.UserPasswordException;
27 import com.liferay.portal.kernel.util.Constants;
28 import com.liferay.portal.kernel.util.ParamUtil;
29 import com.liferay.portal.security.auth.PrincipalException;
30 import com.liferay.portal.service.UserServiceUtil;
31 import com.liferay.portal.struts.ActionConstants;
32 import com.liferay.portal.util.PortalUtil;
33 import com.liferay.portal.util.WebKeys;
34 import com.liferay.util.servlet.SessionErrors;
35
36 import javax.servlet.http.HttpServletRequest;
37 import javax.servlet.http.HttpServletResponse;
38 import javax.servlet.http.HttpSession;
39 import javax.servlet.jsp.PageContext;
40
41 import org.apache.struts.action.Action;
42 import org.apache.struts.action.ActionForm;
43 import org.apache.struts.action.ActionForward;
44 import org.apache.struts.action.ActionMapping;
45
46
52 public class ChangePasswordAction extends Action {
53
54 public ActionForward execute(
55 ActionMapping mapping, ActionForm form, HttpServletRequest req,
56 HttpServletResponse res)
57 throws Exception {
58
59 String cmd = ParamUtil.getString(req, Constants.CMD);
60
61 if (cmd.equals("password")) {
62 try {
63 updatePassword(req, res);
64
65 return mapping.findForward(ActionConstants.COMMON_REFERER);
66 }
67 catch (Exception e) {
68 if (e instanceof UserPasswordException) {
69 UserPasswordException upe = (UserPasswordException)e;
70
71 SessionErrors.add(req, e.getClass().getName(), upe);
72
73 return mapping.findForward("portal.change_password");
74 }
75 else if (e instanceof NoSuchUserException ||
76 e instanceof PrincipalException) {
77
78 SessionErrors.add(req, e.getClass().getName());
79
80 return mapping.findForward("portal.error");
81 }
82 else {
83 req.setAttribute(PageContext.EXCEPTION, e);
84
85 return mapping.findForward(ActionConstants.COMMON_ERROR);
86 }
87 }
88 }
89 else {
90 return mapping.findForward("portal.change_password");
91 }
92 }
93
94 protected void updatePassword(
95 HttpServletRequest req, HttpServletResponse res)
96 throws Exception {
97
98 HttpSession ses = req.getSession();
99
100 long userId = PortalUtil.getUserId(req);
101 String password1 = ParamUtil.getString(req, "password1");
102 String password2 = ParamUtil.getString(req, "password2");
103 boolean passwordReset = ParamUtil.getBoolean(req, "passwordReset");
104
105 UserServiceUtil.updatePassword(
106 userId, password1, password2, passwordReset);
107
108 ses.setAttribute(WebKeys.USER_PASSWORD, password1);
109 }
110
111 }