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