>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

