You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2014/10/09 15:12:40 UTC

git commit: ISIS-920: new "isis.viewer.wicket.clearOriginalDestination" flag.

Repository: isis
Updated Branches:
  refs/heads/master 08d2a053c -> 6d3332f52


ISIS-920: new "isis.viewer.wicket.clearOriginalDestination" flag.


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/6d3332f5
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/6d3332f5
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/6d3332f5

Branch: refs/heads/master
Commit: 6d3332f522723c725bcde54558da5bb16aa20cd5
Parents: 08d2a05
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Oct 9 14:05:50 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Oct 9 14:05:50 2014 +0100

----------------------------------------------------------------------
 .../wicket/ui/pages/login/IsisSignInPanel.java  | 52 ++++++++++++++++++++
 .../wicket/ui/pages/login/WicketSignInPage.java | 20 ++++----
 .../webapp/WEB-INF/viewer_wicket.properties     |  8 +++
 .../webapp/WEB-INF/viewer_wicket.properties     |  8 +++
 4 files changed, 78 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/6d3332f5/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/login/IsisSignInPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/login/IsisSignInPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/login/IsisSignInPanel.java
new file mode 100644
index 0000000..172e7f3
--- /dev/null
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/login/IsisSignInPanel.java
@@ -0,0 +1,52 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.viewer.wicket.ui.pages.login;
+
+import org.apache.wicket.authroles.authentication.panel.SignInPanel;
+
+public class IsisSignInPanel extends SignInPanel {
+
+    private final boolean clearOriginalDestination;
+
+    public IsisSignInPanel(
+            final String id,
+            final boolean rememberMe,
+            final boolean continueToOriginalDestination) {
+        super(id, rememberMe);
+        this.clearOriginalDestination = !continueToOriginalDestination;
+    }
+
+    @Override
+    protected void onSignInSucceeded() {
+
+        if(clearOriginalDestination) {
+            clearOriginalDestination();
+        }
+        super.onSignInSucceeded();
+    }
+
+    @Override
+    protected void onSignInRemembered() {
+        if(clearOriginalDestination) {
+            clearOriginalDestination();
+        }
+        super.onSignInRemembered();
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/6d3332f5/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/login/WicketSignInPage.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/login/WicketSignInPage.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/login/WicketSignInPage.java
index e71714a..ce67826 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/login/WicketSignInPage.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/login/WicketSignInPage.java
@@ -21,20 +21,14 @@ package org.apache.isis.viewer.wicket.ui.pages.login;
 
 import com.google.inject.Inject;
 import com.google.inject.name.Named;
-
 import org.apache.wicket.Application;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.authroles.authentication.panel.SignInPanel;
-import org.apache.wicket.markup.head.CssReferenceHeaderItem;
-import org.apache.wicket.markup.head.IHeaderResponse;
-import org.apache.wicket.markup.head.JavaScriptHeaderItem;
-import org.apache.wicket.markup.head.JavaScriptReferenceHeaderItem;
-import org.apache.wicket.markup.head.PriorityHeaderItem;
+import org.apache.wicket.markup.head.*;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
-
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.viewer.wicket.ui.errors.ExceptionModel;
@@ -113,12 +107,17 @@ public class WicketSignInPage extends WebPage {
 
     protected SignInPanel addSignInPanel() {
         final boolean suppressRememberMe = getConfiguration().getBoolean("isis.viewer.wicket.suppressRememberMe", false);
+        final boolean clearOriginalDestination = getConfiguration().getBoolean("isis.viewer.wicket.clearOriginalDestination", false);
         final boolean rememberMe = !suppressRememberMe;
-        return addSignInPanel(rememberMe);
+        final boolean continueToOriginalDestination = !clearOriginalDestination;
+        return addSignInPanel(rememberMe, continueToOriginalDestination);
     }
 
-    private SignInPanel addSignInPanel(boolean rememberMe) {
-        final SignInPanel signInPanel = new SignInPanel("signInPanel", rememberMe);
+
+    private SignInPanel addSignInPanel(
+            final boolean rememberMe,
+            final boolean continueToOriginalDestination) {
+        final SignInPanel signInPanel = new IsisSignInPanel("signInPanel", rememberMe, continueToOriginalDestination);
         add(signInPanel);
         return signInPanel;
     }
@@ -136,6 +135,7 @@ public class WicketSignInPage extends WebPage {
         }
     }
 
+
  
     // ///////////////////////////////////////////////////
     // System components

http://git-wip-us.apache.org/repos/asf/isis/blob/6d3332f5/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties
index d27bd91..30bf255 100644
--- a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties
+++ b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties
@@ -42,6 +42,14 @@ isis.viewer.wicket.datePickerPattern=dd-mm-yy
 
 
 #isis.viewer.wicket.suppressRememberMe=true
+
+#
+# if user attempts to access a protected URL before signing in, then as a convenience the viewer will continue
+# through to that destination after successful login.  If you consider this to be a security risk then this flag
+# disables that behaviour.
+#
+#isis.viewer.wicket.clearOriginalDestination=true
+
 #isis.viewer.wicket.disableModalDialogs=true
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6d3332f5/example/application/todoapp/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties
----------------------------------------------------------------------
diff --git a/example/application/todoapp/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties b/example/application/todoapp/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties
index 236dcff..19a7380 100644
--- a/example/application/todoapp/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties
+++ b/example/application/todoapp/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties
@@ -47,6 +47,14 @@ isis.viewer.wicket.datePickerPattern=dd-mm-yy
 # isis.viewer.wicket.stripWicketTags=false
 
 #isis.viewer.wicket.suppressRememberMe=true
+
+#
+# if user attempts to access a protected URL before signing in, then as a convenience the viewer will continue
+# through to that destination after successful login.  If you consider this to be a security risk then this flag
+# disables that behaviour.
+#
+#isis.viewer.wicket.clearOriginalDestination=true
+
 #isis.viewer.wicket.disableModalDialogs=true
 
 #isis.viewer.wicket.bookmarkedPages.maxSize=15