Sunday, January 31, 2016

Change Liferay User Account Password Example 1

In this example we will see how to change/update liferay user account password.

STEPS:
Step 1: Add below entry in portal-ext.properties , path inside “liferay-portal-6.2.0-ce-ga1” or
liferay-portal-6.2.0-ce-ga1\tomcat-7.0.42\webapps\ROOT\WEB-INF\classes
session.shared.attributes.excludes = USER_PASSWORD
session.store.password=true

Step2: Create one liferay mvc project name: Passwordchanger  of portlet plugin type.  Now create one portlet  inside that project .In this example portlet class/controller name: ChangePassword.java
Step 3: Add below entry in liferay-portlet.xml  of created portlet after <icon></icon> tag
<private-session-attributes>false</private-session-attributes>

Step 4: Add below code in portlet view.jsp, path: docroot/html/changepassword/view.jsp
<%@ include file="init.jsp" %>

<portlet:defineObjects />


<%
PortletURL  updateUserPasswordURL = renderResponse.createActionURL();
updateUserPasswordURL.setParameter(actionRequest.ACTION_NAME, "changingMyPassword");
%>

<aui:form method="post" action="<%=updateUserPasswordURL%>">
  <liferay-ui:error exception="<%= UserPasswordException.class %>" message="that-password-has-already-been-used-please-enter-in-a-different-password" />
  <liferay-ui:error key="error-key" message="Current Password is invalid."></liferay-ui:error>

       <aui:fieldset cssClass="lfr-portrait-editor">
              <aui:input autoFocus="<%= true %>" type="password" label="Current Password" value="" name="currentPassword" autocomplete="off">
                       <aui:validator name="required" />
              </aui:input>
              <aui:input label="New Password" name="newPassword" size="30" type="password" value="">
                       <aui:validator name="required" />
              </aui:input>
              <aui:input label="Enter Again" name="confirmPassword" size="30" type="password" value="">
                       <aui:validator name="required" />
                            <aui:validator name="equalTo">
                                  '#<portlet:namespace />newPassword'
                            </aui:validator>
              </aui:input>
              <aui:button-row><aui:button type="submit"/></aui:button-row>
       </aui:fieldset>
</aui:form

Step 5: Create one new jsp name:init.jsp  page inside docroot/html/changepassword/init.jsp
And add below code.
<%@page import="com.liferay.portal.UserPasswordException"%>
<%@page import="javax.portlet.PortletURL"%>
<%@page import="com.liferay.portal.kernel.util.WebKeys"%>
<%@page import="com.liferay.portal.theme.ThemeDisplay"%>
<%@ taglib uri="http://liferay.com/tld/aui" prefix="aui"%>
<%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" %>
<%@page import="com.liferay.portal.service.UserLocalServiceUtil"%>
<%@page import="com.liferay.portal.model.User"%>
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
Step 6: Add below code in portlet controller, in this example controller name: ChangePassword.java
package com.test;

import java.io.IOException;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.PortletException;
import com.liferay.util.bridges.mvc.MVCPortlet;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import com.liferay.portal.UserPasswordException;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.servlet.SessionErrors;
import com.liferay.portal.kernel.servlet.SessionMessages;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.portal.service.UserLocalServiceUtil;
import com.liferay.portal.theme.ThemeDisplay;
import com.liferay.portal.util.PortalUtil;
import com.liferay.util.EncryptorException;

/**
 * Portlet implementation class ChangePassword
 */
public class ChangePassword extends MVCPortlet {

       public void changingMyPassword(ActionRequest actionRequest,ActionResponse actionResponse) throws PortalException, SystemException, EncryptorException, IOException, PortletException
       {
                     try {
                                  ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(WebKeys.THEME_DISPLAY);
                                  HttpServletRequest httprequest = PortalUtil.getHttpServletRequest(actionRequest);
                                  HttpSession httpsession = httprequest.getSession();
                                 
                                  //Get the user's current password from session
                                  String userAccountdatabasePassword = (String)httpsession.getAttribute(WebKeys.USER_PASSWORD);
                                  String userInputcurrentPassword = (String) actionRequest.getParameter("currentPassword").trim();
                          
                                  String newPass = (String) actionRequest.getParameter("newPassword").trim();
                                  String confirmPass = (String) actionRequest.getParameter("confirmPassword").trim();
                                 
                                  if (userAccountdatabasePassword.equals(userInputcurrentPassword) && newPass.equals(confirmPass)) {
                                                UserLocalServiceUtil.updatePassword(themeDisplay.getUserId(), newPass,confirmPass, false);
                                                //Set the entered new password into session after changing the password
                                                httpsession.setAttribute(WebKeys.USER_PASSWORD, newPass);
                                                SessionMessages.add(actionRequest, "request_processed", "User Account Password updated successfully.");
                                                actionResponse.setRenderParameter("jspPage", "/html/changepassword/view.jsp");
                                  } else {
                                          SessionErrors.add(actionRequest, "error-key", "Sorry, Something wrong.");
                                          actionResponse.setRenderParameter("jspPage", "/html/changepassword/view.jsp");
                                  }
                     } catch (UserPasswordException e) {
                                     SessionErrors.add(actionRequest, UserPasswordException.class.getName(), e);
                                     actionResponse.setRenderParameter("jspPage", "/html/changepassword/view.jsp");
                     }
       }
}

After deploying portlet.

OUTPUT:

Login using your account credential,
Example :

Password: test

0 comments:

Post a Comment