Thursday, June 12, 2014

Custom prelogin and postlogin action

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.
-      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("***********************************");
              }
}

-      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 :
 
-      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
--------------------------------------------------------------------------------------------- 
 

 
 

No comments:

Post a Comment