From 8fc63a362541bad31fd995b4bdada0b1baeab7a7 Mon Sep 17 00:00:00 2001
From: Doug Reed <doug.reed@wisc.edu>
Date: Fri, 22 Apr 2016 15:22:39 -0500
Subject: [PATCH] MUMUP-2451 New 403 Error message

---
 .../java/edu/wisc/my/root/MyUWErrorValve.java |  15 ++-
 myuw-root-webapp/src/main/webapp/403.html     | 124 ++++++++++++++++++
 .../src/main/webapp/WEB-INF/web.xml           |   6 +-
 3 files changed, 140 insertions(+), 5 deletions(-)
 create mode 100644 myuw-root-webapp/src/main/webapp/403.html

diff --git a/myuw-error-valve/src/main/java/edu/wisc/my/root/MyUWErrorValve.java b/myuw-error-valve/src/main/java/edu/wisc/my/root/MyUWErrorValve.java
index d019985..debd969 100644
--- a/myuw-error-valve/src/main/java/edu/wisc/my/root/MyUWErrorValve.java
+++ b/myuw-error-valve/src/main/java/edu/wisc/my/root/MyUWErrorValve.java
@@ -12,6 +12,7 @@ import org.apache.catalina.valves.ErrorReportValve;
 public class MyUWErrorValve extends ErrorReportValve implements Valve {
   
   private static String ERROR_PAGE_LOCATION="/500.html";
+  private static String AUTHORIZATION_ERROR_LOCATION="/403.html";
   private static String MISSING_PAGE_LOCATION="/404.html";
   
   @Override
@@ -28,11 +29,17 @@ public class MyUWErrorValve extends ErrorReportValve implements Valve {
     final String page;
     InputStream in = null;
     try {
-      if(statusCode > 400 && statusCode < 500) {
-        page = MISSING_PAGE_LOCATION;
-      } else {
-        page = ERROR_PAGE_LOCATION;
+      switch(statusCode){
+      case 403:
+    	  page = AUTHORIZATION_ERROR_LOCATION;
+    	  break;
+      case 404:
+    	  page=MISSING_PAGE_LOCATION;
+    	  break;
+      default:
+    	  page=ERROR_PAGE_LOCATION;
       }
+      
       try {
         in = MyUWErrorValve.class.getResourceAsStream(page);
         if(in == null) {
diff --git a/myuw-root-webapp/src/main/webapp/403.html b/myuw-root-webapp/src/main/webapp/403.html
new file mode 100644
index 0000000..71c1830
--- /dev/null
+++ b/myuw-root-webapp/src/main/webapp/403.html
@@ -0,0 +1,124 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+  <title>MyUW Page Not Found</title>
+  <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">
+  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css">
+  <style>
+    a {
+      color:#b70101;
+    }
+    a:hover {
+      color:#660000;
+    }
+    p.apologize {
+      text-align:center;
+      padding:20px 0px 50px;
+    }
+    .header {
+      background-color:#b70101;
+      text-align:center;
+      padding:10px;
+      height:53px;
+    }
+    .header h1 {
+      font-size:2.3em;
+      font-weight:100;
+      color:#fff;
+      text-align:center;
+      margin-top:0px;
+      white-space:nowrap;
+    }
+    .header h2 {
+      color:#fff;
+      text-align:left;
+      font-size:1.8em;
+      font-weight:200;
+      margin:2px 0px 0px 30px;
+      padding:0;
+      white-space:nowrap;
+    }
+    .header div {
+      display:inline;
+    }
+    .main-content {
+      text-align:center;
+      padding-top:30px;
+    }
+    .main-content p {
+      font-size:1.2em;
+      padding:10px 0px;
+    }
+    .main-content strong {
+      font-size:1.7em;
+      font-weight:200;
+      text-align:center;
+    }
+    .service {
+      width:35%;
+    }
+    .crest {
+      display:block;
+      position:absolute;
+      width:200px;
+      z-index:5;
+      overflow:hidden;
+    }
+    .madison {
+      text-align: center;
+      margin:30px 0px 15px
+    }
+    @media (max-width:768px) {
+      .main-content strong {
+        font-size:1.55em;
+      }
+      .main-content p {
+        font-size:1.1em;
+      }
+      .header h1 {
+        font-size:1.8em;
+        margin:3px -50% 0px;
+        white-space:no-wrap;
+      }
+      .header h2 {
+        font-size:1.3em;
+        margin-top:7px;
+      }
+      .outage-title {
+        padding:0 -50%;
+      }
+    }
+    @media (max-width:500px) {
+      .header h1 {
+        margin:3px 0px 0px;
+      }
+    }
+  </style>
+</head>
+
+<body>
+  <div id="row">
+    <div class="col-xs-12 header">
+      <div class="col-xs-4 col-sm-4 photo-div">
+        <img src="/main_logo_w_all.png" class="crest">
+      </div>
+      <div class="col-xs-4 outage-title">
+        <h1>Access Denied</h1>
+      </div>
+      <div class="col-sm-4">
+      </div>
+    </div>
+  </div>
+  <div class="container-fluid">
+    <div class="row">
+      <div class="col-xs-10 col-xs-offset-1 col-sm-8 col-sm-offset-2 main-content">
+        <p><strong>Sorry, you're not authorized to access this.</p>
+        <br><br>
+        <i class='fa fa-exclamation-triangle fa-5x'></i>
+        <p>If you're here by accident, head back to your My-UW <a href='/web'>homepage</a>.</p>
+        <p>For help with authorization, contact the DoIT <a href="https://kb.wisc.edu/helpdesk/"></a>Help Desk</a></p>
+      </div>
+    </div>
+  </div>
+</body>
+</html>
diff --git a/myuw-root-webapp/src/main/webapp/WEB-INF/web.xml b/myuw-root-webapp/src/main/webapp/WEB-INF/web.xml
index 2342276..53fdc5c 100644
--- a/myuw-root-webapp/src/main/webapp/WEB-INF/web.xml
+++ b/myuw-root-webapp/src/main/webapp/WEB-INF/web.xml
@@ -4,7 +4,11 @@
 
 <web-app>
   <display-name>MyUW Root</display-name>
-
+  <error-page>
+    <error-code>403</error-code>
+    <location>/403.html</location>
+  </error-page>
+  
   <error-page>
     <error-code>500</error-code>
     <location>/500.html</location>
-- 
GitLab