-
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{
@Override
public 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("***********************************");
}
}
-
CustomPreLoginAction.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 CustomPreLoginAction
extends Action {
@Override
public void
run(HttpServletRequest httpreq, HttpServletResponse httpres)
throws ActionException {
System.out.println("***********************************");
System.out.println("Hey Buddy U
Pre 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 {
@Override
public 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
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 {
@Override
public 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("***********************************");
}
}
-
Modify portal.properties file :
login.events.pre=com.liferay.custom.action.CustomPreLoginAction
login.events.post=com.liferay.custom.action.CustomPostLoginAction
logout.events.pre=com.liferay.custom.action.CustomPreLogoutAction
logout.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 :
-
Some Useful Properties :
-
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{
@Override
public 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 block
e.printStackTrace();
}
catch (SystemException e)
{
// TODO Auto-generated
catch block
e.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 {
@Override
public 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 block
e.printStackTrace();
}
catch (SystemException e)
{
// TODO Auto-generated
catch block
e.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
---------------------------------------------------------------------------------------------
Hook to Override JSP
Hooks to Override Portal Properties File
Hooks to override language Properties Files
Hooks to override user Login and Landing Page-PerLogin and Postlogin
Hooks To override Struts Actions
Hooks to override dockbar Portlet
Hook to Override JSP
Hooks to Override Portal Properties File
Hooks to override language Properties Files
Hooks to override user Login and Landing Page-PerLogin and Postlogin
Hooks To override Struts Actions
Hooks to override dockbar Portlet
--------------------------------------------------------------------------------------
3 comments:
Hi DarshanKumar
Is it possible to pass object from action class in MVC to CustomPreLogoutAction in hook
Thank You
azar
Hi Drasankumar,
Nice explanation, please can get source code for this hook.
Post a Comment