[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[Pki-devel] [PATCH] 957 Added access banner for PKI UI.



The PKI UI main page has been modified to retrieve access banner
and display it once at the beginning of the SSL connection.

https://fedorahosted.org/pki/ticket/2582

--
Endi S. Dewata
>From d0b86cbad1ed259a1c59fe72a3f0334197521059 Mon Sep 17 00:00:00 2001
From: "Endi S. Dewata" <edewata redhat com>
Date: Tue, 21 Feb 2017 19:50:37 +0100
Subject: [PATCH] Added access banner for PKI UI.

The PKI UI main page has been modified to retrieve access banner
and display it once at the beginning of the SSL connection.

https://fedorahosted.org/pki/ticket/2582
---
 base/server/share/webapps/pki/js/pki-banner.js | 56 ++++++++++++++++++++++++++
 base/server/share/webapps/pki/js/pki.js        | 11 +++++
 base/server/share/webapps/pki/ui/index.jsp     |  8 +++-
 3 files changed, 73 insertions(+), 2 deletions(-)
 create mode 100644 base/server/share/webapps/pki/js/pki-banner.js

diff --git a/base/server/share/webapps/pki/js/pki-banner.js b/base/server/share/webapps/pki/js/pki-banner.js
new file mode 100644
index 0000000000000000000000000000000000000000..f5f4da02a70d83ceb7b9cdfcd7562185b031ddfb
--- /dev/null
+++ b/base/server/share/webapps/pki/js/pki-banner.js
@@ -0,0 +1,56 @@
+/* --- BEGIN COPYRIGHT BLOCK ---
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Copyright (C) 2017 Red Hat, Inc.
+ * All rights reserved.
+ * --- END COPYRIGHT BLOCK ---
+ *
+ * @author Endi S. Dewata
+ */
+
+$(function() {
+
+    // if this is an SSL connection but banner is not displayed yet
+    if (location.protocol == "https:" && !sessionStorage.bannerDisplayed) {
+
+        // get server info including banner
+        PKI.getInfo({
+            success: function(data, textStatus, jqXHR) {
+
+                // if banner is disabled, do not check again
+                if (!data.Banner) {
+                    sessionStorage.bannerDisplayed = true;
+                    return;
+                }
+
+                // display the banner and ask for confirmation
+                var message = data.Banner.trim() + "\n\nDo you want to proceed?";
+
+                if (confirm(message)) {
+                    // mark that banner is already displayed
+                    sessionStorage.bannerDisplayed = true;
+
+                } else {
+                    // redirect to PKI UI welcome page
+                    window.location = '/pki';
+                }
+            },
+            error: function(jqXHR, textStatus, errorThrown) {
+                // unable to get server info, display error
+                alert(textStatus);
+            }
+        });
+    }
+
+});
diff --git a/base/server/share/webapps/pki/js/pki.js b/base/server/share/webapps/pki/js/pki.js
index 573d8819b35a7ba7bbab543026d940e6af843af4..fc1a9036de51d86ed60dc37d9f0551ec5562b401 100644
--- a/base/server/share/webapps/pki/js/pki.js
+++ b/base/server/share/webapps/pki/js/pki.js
@@ -47,6 +47,17 @@ var PKI = {
 
         return newContent;
     },
+    getInfo: function(options) {
+        $.ajax({
+            type: "GET",
+            url: "/pki/rest/info",
+            dataType: "json"
+        }).done(function(data, textStatus, jqXHR) {
+            if (options.success) options.success.call(self, data, textStatus, jqXHR);
+        }).fail(function(jqXHR, textStatus, errorThrown) {
+            if (options.error) options.error.call(self, jqXHR, textStatus, errorThrown);
+        });
+    },
     logout: function(options) {
         options = options || {};
         if (window.crypto && typeof window.crypto.logout === "function") { // Firefox
diff --git a/base/server/share/webapps/pki/ui/index.jsp b/base/server/share/webapps/pki/ui/index.jsp
index ade01bc9e29419c725651546059dc0350afa0084..17f8d18df9b7344f1ac8bbf37e06bf2da84e070d 100644
--- a/base/server/share/webapps/pki/ui/index.jsp
+++ b/base/server/share/webapps/pki/ui/index.jsp
@@ -18,8 +18,12 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
 <head>
-<script type="text/javascript" language="JavaScript" src="/pki/js/jquery.js"></script>
-<script type="text/javascript" language="JavaScript" src="/pki/js/jquery.i18n.properties.js"></script>
+<script src="/pki/js/jquery.js"></script>
+<script src="/pki/js/jquery.i18n.properties.js"></script>
+<script src="/pki/js/underscore.js"></script>
+<script src="/pki/js/backbone.js"></script>
+<script src="/pki/js/pki.js"></script>
+<script src="/pki/js/pki-banner.js"></script>
 
 <script type="text/javascript" language="JavaScript">
 $(function() {
-- 
2.9.3


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]