In this example
we will see how to create/add user in liferay using liferay mvc custom portlet
plugin.
First we
will register programmatically and just after user get registered we will
logged in that user in portal.
STEPS:
Step 1: Add below property in portal-ext.poperties file.
session.enable.phishing.protection=false
Step2: Create one liferay mvc project name: Registration of portlet plugin type. Now create one portlet inside that project .In this example portlet
class/controller name: Register.java
Step 3: Add below lines in liferay-portlet.xml file, just after
<icon></icon> tag.
<instanceable>false</instanceable>
<private-session-attributes>false</private-session-attributes>
Complete
code of liferay-portlet.xml
<?xml version="1.0"?>
<!DOCTYPE liferay-portlet-app
PUBLIC "-//Liferay//DTD
Portlet Application 6.2.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_6_2_0.dtd">
<liferay-portlet-app>
<portlet>
<portlet-name>register</portlet-name>
<icon>/icon.png</icon>
<instanceable>false</instanceable>
<private-session-attributes>false</private-session-attributes>
<header-portlet-css>/css/main.css</header-portlet-css>
<footer-portlet-javascript>
/js/main.js
</footer-portlet-javascript>
<css-class-wrapper>register-portlet</css-class-wrapper>
</portlet>
<role-mapper>
<role-name>administrator</role-name>
<role-link>Administrator</role-link>
</role-mapper>
<role-mapper>
<role-name>guest</role-name>
<role-link>Guest</role-link>
</role-mapper>
<role-mapper>
<role-name>power-user</role-name>
<role-link>Power User</role-link>
</role-mapper>
<role-mapper>
<role-name>user</role-name>
<role-link>User</role-link>
</role-mapper>
</liferay-portlet-app>
Step 4: Add below code in portlet view.jsp, path:
docroot/html/register/view.jsp
<%@include file="init.jsp"%>
<%
String userExistMessage =
Validator.isNotNull((String)request.getAttribute("USER_EXIST")) ? (String)request.getAttribute("USER_EXIST") : null;
PortletURL
registerUserURL=renderResponse.createActionURL();
registerUserURL.setParameter(ActionRequest.ACTION_NAME,
"registration");
%>
<%
if(Validator.isNotNull(userExistMessage)){
%>
<div Style="color:red;"><%=userExistMessage%></div>
<%}%>
<aui:form action="<%=registerUserURL%>"
method="post">
<aui:input
name="firstName" label=""
placeholder="First Name">
<aui:validator name="required"/>
<aui:validator name="alpha"/>
</aui:input>
<aui:input
name="lastName" label=""
placeholder="Last Name" >
<aui:validator name="required"/>
<aui:validator name="alpha"/>
</aui:input>
<aui:input name="email" label=""
placeholder="E-mail">
<aui:validator name="required"/>
<aui:validator name="email"/>
</aui:input>
<aui:input type="password" name="password" label=""
placeholder="Password">
<aui:validator name="required"/>
</aui:input>
<aui:input type="password" name="repass"
label="" placeholder="Retype-Password">
<aui:validator name="equalTo">'#<portlet:namespace
/>password'</aui:validator>
</aui:input>
<aui:button type="submit"
value="Register"/>
</aui:form>
Step 5: Create one new jsp name:init.jsp page inside docroot/html/register/init.jsp
And add below code.
<%@page import="com.liferay.portal.kernel.util.Validator"%>
<%@page import="com.liferay.portal.kernel.util.ParamUtil"%>
<%@page import="javax.portlet.ActionRequest"%>
<%@page import="javax.portlet.PortletURL"%>
<%@ taglib uri="http://alloy.liferay.com/tld/aui" prefix="aui"%>
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<portlet:defineObjects />
Step 6: Add below code in portlet controller, in this example
controller name: Regsiter.java
package com.test;
import java.io.IOException;
import
javax.portlet.ActionRequest;
import
javax.portlet.ActionResponse;
import
javax.portlet.PortletException;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
import
com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.PortalClassLoaderUtil;
import
com.liferay.portal.kernel.util.Validator;
import
com.liferay.portal.kernel.util.WebKeys;
import
com.liferay.portal.model.CompanyConstants;
import
com.liferay.portal.model.User;
import com.liferay.portal.service.ServiceContext;
import
com.liferay.portal.service.UserLocalServiceUtil;
import
com.liferay.portal.theme.ThemeDisplay;
import
com.liferay.portal.util.PortalUtil;
import
com.liferay.util.bridges.mvc.MVCPortlet;
/**
* Portlet implementation class Register
*/
public class Register extends MVCPortlet {
public void
registration(ActionRequest actionRequest,
ActionResponse
actionResponse) throws IOException,
PortletException, com.liferay.portal.kernel.exception.PortalException,
com.liferay.portal.kernel.exception.SystemException {
String
firstName = ParamUtil.getString(actionRequest, "firstName").trim();
String
lastName = ParamUtil.getString(actionRequest, "lastName").trim();
String
email = ParamUtil.getString(actionRequest, "email").trim();
String
password = ParamUtil.getString(actionRequest, "password").trim();
String
confirmPassword = ParamUtil.getString(actionRequest, "repass");
ThemeDisplay
themeDisplay = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY);
User
user = null;
try {
user =
UserLocalServiceUtil.fetchUserByEmailAddress(themeDisplay.getCompanyId(), email);
if(Validator.isNotNull(user)){
actionRequest.setAttribute("USER_EXIST", " User Exist
with entered Email Address.");
actionResponse.setRenderParameter("jspPage", "/html/register/view.jsp");
} else{
ServiceContext
serviceContext = new ServiceContext();
HttpServletRequest request = PortalUtil.getHttpServletRequest(actionRequest);
HttpServletResponse
response = PortalUtil.getHttpServletResponse(actionResponse);
user =
UserLocalServiceUtil.addUser(10198, themeDisplay.getCompanyId(), false, password, confirmPassword, true, null, email, 0L, "", themeDisplay.getLocale(),
firstName, "", lastName, 0, 0, false, 0, 1,1970, "", null, null,null,null, false, serviceContext);
ClassLoader
pcl =
PortalClassLoaderUtil.getClassLoader();
Class lClass = pcl.loadClass("com.liferay.portlet.login.util.LoginUtil");
java.lang.reflect.Method method = lClass.getDeclaredMethod("login", HttpServletRequest.class,
HttpServletResponse.class, String.class, String.class, Boolean.TYPE, String.class);
try{
String
portalURL = PortalUtil.getPortalURL(actionRequest);
method.invoke(null, request, response, email, password, false, CompanyConstants.AUTH_TYPE_EA);
actionResponse.sendRedirect(portalURL+"/web/guest/welcome");
}catch(Exception e){
}
}
}
catch (Exception e) {
e.printStackTrace();
}
}
}
After deploying portlet.
OUTPUT:
it gives UserEmailAddressException
ReplyDeleteThanks and I have a tremendous proposal: How Much Is A Complete House Renovation average cost to remodel a house
ReplyDelete