maia/.svn/pristine/b4/b4b8afbfc2fc415df17fd8e0efc...

59 lines
1.7 KiB
Plaintext
Executable File

package com.fp.frontend.filter.security;
import javax.faces.application.NavigationHandler;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
import javax.servlet.http.HttpSession;
import com.fp.persistence.pgeneral.safe.TsafeUserDetail;
public class AuthorizationListener implements PhaseListener {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public void afterPhase(PhaseEvent event) {
FacesContext facesContext = event.getFacesContext();
String currentPage = facesContext.getViewRoot().getViewId();
boolean isLoginPage = (currentPage.lastIndexOf("login.xhtml") > -1);
HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(false);
NavigationHandler nh = facesContext.getApplication().getNavigationHandler();
//NavigationHandler nh = FacesContext.getCurrentInstance().getApplication().getNavigationHandler();
TsafeUserDetail currentUser = session!=null ? (TsafeUserDetail) session.getAttribute("TSAFEUSERDETAIL"):null;
if (!isLoginPage && (currentUser == null)) {
//nh.handleNavigation(facesContext, null, "login");
try {
facesContext.getExternalContext().dispatch("/login.xhtml");
} catch (Exception e) {
e.printStackTrace();
}
}else if(isLoginPage && (currentUser!=null)){
//nh.handleNavigation(facesContext, null, "workspace");
try {
facesContext.getExternalContext().dispatch("/pages/workspace.xhtml");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Override
public void beforePhase(PhaseEvent event) {
}
@Override
public PhaseId getPhaseId() {
return PhaseId.RESTORE_VIEW;
}
}