[jboss-cvs] jboss-seam/src/main/org/jboss/seam/core ...
Gavin King
gavin.king at jboss.com
Thu Feb 22 15:21:22 EST 2007
User: gavin
Date: 07/02/22 15:21:22
Modified: src/main/org/jboss/seam/core Pages.java
Log:
don't redirect if you are already on the login page
Revision Changes Path
1.100 +26 -7 jboss-seam/src/main/org/jboss/seam/core/Pages.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: Pages.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/Pages.java,v
retrieving revision 1.99
retrieving revision 1.100
diff -u -b -r1.99 -r1.100
--- Pages.java 22 Feb 2007 18:08:54 -0000 1.99
+++ Pages.java 22 Feb 2007 20:21:22 -0000 1.100
@@ -1,6 +1,7 @@
package org.jboss.seam.core;
import static org.jboss.seam.InterceptionType.NEVER;
import static org.jboss.seam.annotations.Install.BUILT_IN;
+
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
@@ -37,18 +38,19 @@
import org.jboss.seam.log.LogProvider;
import org.jboss.seam.log.Logging;
import org.jboss.seam.pages.Action;
-import org.jboss.seam.pages.Navigation;
import org.jboss.seam.pages.ConversationControl;
import org.jboss.seam.pages.Input;
-import org.jboss.seam.pages.ProcessControl;
-import org.jboss.seam.pages.Rule;
+import org.jboss.seam.pages.Navigation;
+import org.jboss.seam.pages.Output;
import org.jboss.seam.pages.Page;
import org.jboss.seam.pages.Param;
+import org.jboss.seam.pages.ProcessControl;
import org.jboss.seam.pages.RedirectNavigationHandler;
import org.jboss.seam.pages.RenderNavigationHandler;
-import org.jboss.seam.pages.Output;
+import org.jboss.seam.pages.Rule;
import org.jboss.seam.pages.TaskControl;
import org.jboss.seam.security.Identity;
+import org.jboss.seam.security.NotLoggedInException;
import org.jboss.seam.util.Parameters;
import org.jboss.seam.util.Resources;
import org.jboss.seam.util.Strings;
@@ -252,12 +254,12 @@
for ( Page page: getPageStack(viewId) )
{
- if ( page.isConversationRequired() && !Manager.instance().isLongRunningConversation() )
+ if ( isNoConversationRedirectRequired(page) )
{
redirectToNoConversationView();
return result;
}
- else if ( page.isLoginRequired() && !Identity.instance().isLoggedIn() )
+ else if ( isLoginRedirectRequired(viewId, page) )
{
redirectToLoginView();
return result;
@@ -274,6 +276,19 @@
return result;
}
+ private boolean isNoConversationRedirectRequired(Page page)
+ {
+ return page.isConversationRequired() &&
+ !Manager.instance().isLongRunningConversation();
+ }
+
+ private boolean isLoginRedirectRequired(String viewId, Page page)
+ {
+ return page.isLoginRequired() &&
+ !viewId.equals( getLoginViewId() ) &&
+ !Identity.instance().isLoggedIn();
+ }
+
private static String getRequestScheme(FacesContext facesContext)
{
String requestUrl = getRequestUrl(facesContext);
@@ -328,7 +343,11 @@
notLoggedIn();
String loginViewId = getLoginViewId();
- if (loginViewId!=null)
+ if (loginViewId==null)
+ {
+ throw new NotLoggedInException();
+ }
+ else
{
Manager.instance().redirect(loginViewId);
}
More information about the jboss-cvs-commits
mailing list