http://learntolead-liferay.blogspot.in/2012/07/liferay-hook-4-custom-action-prelogin.html
_______________________________________________________________________
Some action classes get called while performing some events in liferay.
_______________________________________________________________________
Some action classes get called while performing some events in liferay.
-
For
Example:
-
Login event :
login.events.pre : Called
before get Login
-
login.events.pre=com.liferay.portal.events.LoginPreAction
-
login.events.post : Called after get
Login
login.events.post=com.liferay.portal.events.ChannelLoginPostAction,
com.liferay.portal.events.DefaultLandingPageAction,
com.liferay.portal.events.LoginPostAction
-
Logout event :
logout.events.pre : called
before get Logout
logout.events.pre=com.liferay.portal.events.LogoutPreAction
logout.events.post : called
after get Logout
logout.events.post=com.liferay.portal.events.LogoutPostAction,com.liferay.portal.events.DefaultLogoutPageAction,com.liferay.portal.events.SiteMinderLogoutAction
-
Startup Events :
-
Global startup event that runs once when
the portal initializes.
global.startup.events=com.liferay.portal.events.GlobalStartupAction
-
Shutdown Events
-
Global shutdown event that runs once when
the portal shuts down.
global.shutdown.events=com.liferay.portal.events.GlobalShutdownAction
-
All this events are specified in
portal.properties file.
-
In order to call custom action for this
events , specify custom action in
portal.properties file.
-
Steps:
-
We are going to use same hook :
myfirsthook-hook :
-
Create a new package com.liferay.custom.action
within \hooks\myfirsthook-hook\docroot\WEB-INF\src
folder.
-
Create
four classes each extending com.liferay.portal.kernel.events.Action class and implementing run method
-
CustomPostLoginAction.java
package com.liferay.custom.action;import java.util.Date;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.liferay.portal.kernel.events.Action;import com.liferay.portal.kernel.events.ActionException;public class CustomPostLoginAction extends Action{@Overridepublic void run(HttpServletRequest httpreq, HttpServletResponse httpres)throws ActionException {System.out.println("***********************************");System.out.println("Hey Buddy U Post Login Now"+new Date());System.out.println("***********************************");}}
-
CustomPreLogoutAction.java
package com.liferay.custom.action;import java.util.Date;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.liferay.portal.kernel.events.Action;import com.liferay.portal.kernel.events.ActionException;public class CustomPreLogoutAction extends Action {@Overridepublic void run(HttpServletRequest httpreq, HttpServletResponse httpres) throws ActionException {System.out.println("***********************************");System.out.println("Hey Buddy U Pre Logout Now"+new Date());System.out.println("***********************************");}}
-
CustomPostLogoutAction.java
Modify portal.properties file :package com.liferay.custom.action;import java.util.Date;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.liferay.portal.kernel.events.Action;import com.liferay.portal.kernel.events.ActionException;public class CustomPostLogoutAction extends Action {@Overridepublic void run(HttpServletRequest httpreq, HttpServletResponse httpres)throws ActionException {System.out.println("***********************************");System.out.println("Hey Buddy U Post Logout Now"+new Date());System.out.println("***********************************");}}
login.events.pre=com.liferay.custom.action.CustomPreLoginActionlogin.events.post=com.liferay.custom.action.CustomPostLoginActionlogout.events.pre=com.liferay.custom.action.CustomPreLogoutActionlogout.events.post=com.liferay.custom.action.CustomPostLogoutAction
-
Modify liferay-hook.xml :
<hook><portal-properties>portal.propertiesportal-properties>hook>
-
Deploy Hook
-
On
Login u get custom messages on tomcat console :
-
On Logout u get custom messages on tomcat
console :
- Forward user to last visited page after Login :- auth.forward.by.last.path=true- .- Forward/Redirect user to specified page after Login:- auth.forward.by.redirect=true- .- Login friendly url :- auth.login.site.url=/login- .- Login Url where Login portlet is deployed :- auth.login.url=/web/guest/home- .- Default Landing page after login.default.landing.page.path=- Default Logout page afte logout.default.logout.page.path=----------------------------------------------------------------------------------------------------
- Forwarding a user after Login to its public pages
------------------------------------------------------------------------------------------------
package com.liferay.custom.action;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import com.liferay.portal.kernel.events.Action;import com.liferay.portal.kernel.events.ActionException;import com.liferay.portal.kernel.exception.PortalException;import com.liferay.portal.kernel.exception.SystemException;import com.liferay.portal.kernel.struts.LastPath;import com.liferay.portal.kernel.util.StringPool;import com.liferay.portal.model.User;import com.liferay.portal.util.PortalUtil;import com.liferay.portal.kernel.util.WebKeys;public class CustomPublicUserPagePostLoginAction extends Action{@Overridepublic void run(HttpServletRequest httpsreq, HttpServletResponse httpsres)throws ActionException {/* Make sure auth.forward.by.last.path=true in portal.propertie file */User user= null;String username=null;try {user = PortalUtil.getUser(httpsreq);username = user.getScreenName();} catch (PortalException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SystemException e) {// TODO Auto-generated catch blocke.printStackTrace();}LastPath publiclastPath = new LastPath(StringPool.BLANK, "/web/"+username+"/home");/* it gives user public page url :/web/test/home */HttpSession session = httpsreq.getSession();session.setAttribute(WebKeys.LAST_PATH, publiclastPath);}}
-
Forward a user to its private pages after
Login :
package com.liferay.custom.action;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import com.liferay.portal.kernel.events.Action;import com.liferay.portal.kernel.events.ActionException;import com.liferay.portal.kernel.exception.PortalException;import com.liferay.portal.kernel.exception.SystemException;import com.liferay.portal.kernel.struts.LastPath;import com.liferay.portal.kernel.util.StringPool;import com.liferay.portal.kernel.util.WebKeys;import com.liferay.portal.model.User;import com.liferay.portal.util.PortalUtil;public class CustomPrivateUserPagePostLoginAction extends Action {@Overridepublic void run(HttpServletRequest httpsreq, HttpServletResponse httpsres)throws ActionException {/* Make sure auth.forward.by.last.path=true in portal.propertie file */User user= null;String username=null;try {user = PortalUtil.getUser(httpsreq);username = user.getScreenName();} catch (PortalException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SystemException e) {// TODO Auto-generated catch blocke.printStackTrace();}LastPath privatelastPath = new LastPath(StringPool.BLANK, "/user/"+username+"/home");/* it gives user private page url :/user/test/home */HttpSession session = httpsreq.getSession();session.setAttribute(WebKeys.LAST_PATH, privatelastPath);}}
-------------------------------------------------------------------
- Note : if there are multiple Hooks Overriding same functionality ,then they are get executed in the order written in portal.properties.
login.events.post=com.liferay.custom.action.CustomPostLoginAction, com.liferay.custom.action.CustomPublicUserPagePostLoginAction ,com.liferay.custom.action.CustomPrivateUserPagePostLoginAction---------------------------------------------------------------------------------------------
No comments:
Post a Comment