/** * Copyright 2005-2016 hdiv.org * * Licensed 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.hdiv.filter; import java.io.PrintWriter; import java.util.List; import org.hdiv.context.RequestContextHolder; import org.springframework.web.util.HtmlUtils; /** * Utility class to creates default HDIV error page. * * @since 2.1.7 */ public class DefaultErrorPageWritter { /** * Create default HDIV error page and write to the output. * * @param context request context * @param out output to the response * @param editableErrors existing editable errors to show in error page. */ public void writeErrorPage(final RequestContextHolder context, final PrintWriter out, final List<ValidatorError> editableErrors) { // @formatter:off out.write("<!DOCTYPE html>"); out.write("<html>"); out.write("<head>"); out.write("<title>Hdiv | Unauthorized access</title>"); out.write("<style type=\"text/css\">"); out.write("body {\n"+ " background: #efeded none repeat scroll 0 0;\n"+ " margin: 0;\n"+ " font-family: verdana, Arial, Helvetica, sans-serif;\n"+ " font-size: 14px;\n"+ " color: #333;\n"+ "}\n"); out.write(".unauthorized {\n"+ " color: inherit;\n"+ " font-family: Open Sans,Helvetica,Arial,sans-serif;\n"+ " font-weight: 500;\n"+ " font-size: 19px;\n"+ " line-height: 1.1;\n"+ "}\n"); out.write(".hdiv-header {\n"+ " background: #fff none repeat scroll 0 0;\n"+ " border-bottom: 1px solid #eaeaea;\n"+ " box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);\n"+ " box-sizing: border-box;\n"+ " height: 78px;\n"+ " padding-top: 15px;\n"+ " width: 100%;\n"+ "}\n"); out.write(".hdiv-error-box{\n"+ " background: #f9f9f9 none repeat scroll 0 0;\n"+ " box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n"+ " box-sizing: border - box;\n"+ " margin: 30px auto 0;\n"+ " padding-left: 190px;\n"+ " width: 350px;\n"+ " display: block;\n"+ "}\n"); out.write(".hdiv-icon-box {\n"+ " margin-left: -190px;\n"+ " position: absolute;\n"+ " width: 160px;\n"+ "}\n"); out.write(".hdiv-icon-box img {\n"+ " display: block;\n"+ " margin: 40px auto 0;\n"+ "}\n"+ "img {\n"+ " vertical-align: middle;\n"+ "}\n"+ "img {\n"+ " border: 0 none;\n"+ "}\n"); out.write(".hdiv-error-box h1 {\n"+ " display: block;\n"+ " font-size: 19px;\n"+ " font-weight: 600;\n"+ " line-height: 20px;\n"+ " margin: 0;\n"+ " padding: 35px 0 0;\n"+ " margin: 0px 0px 20px 0px;\n"+ "}\n"); out.write(".hdiv-message-box{\n"+ " background: white; \n"+ " padding: 0 0 15px 30px; \n"+ " margin-left: -32px; \n"+ " border-left: 1px solid #eaeaea;\n"+ "}\n"); out.write(".hdiv-btn {\n"+ " -moz-user-select: none;\n"+ " background-image: none;\n"+ " border: 1px solid transparent;\n"+ " border-radius: 4px;\n"+ " cursor: pointer;\n"+ " display: inline-block;\n"+ " font-size: 14px;\n"+ " font-weight: 400;\n"+ " line-height: 1.42857;\n"+ " margin-bottom: 0;\n"+ " padding: 6px 12px;\n"+ " text-align: center;\n"+ " vertical-align: middle;\n"+ " white-space: nowrap;\n"+ " background-color: #eee;\n"+ " background-image: linear-gradient(to bottom, #f2f2f2, #e8e8e8);\n"+ " background-repeat: repeat-x;\n"+ " border: 1px solid #c4c4c4;\n"+ " box-shadow: 0 1px 0 #fff inset;\n"+ " color: #444 !important;\n"+ " text-shadow: 0 1px 0 #fff;\n"+ "}\n"+ "a, button, input {\n"+ " outline: 0 none !important;\n"+ " text-decoration: none;\n"+ "}\n"); out.write(".hdiv-btn-primary {\n"+ " background-color: #3b94e5;\n"+ " background-image: linear-gradient(to bottom, #32d692, #00cc77);\n"+ " background-repeat: repeat-x;\n"+ " border-color: #00b76b;\n"+ " box-shadow: 0 1px 0 rgba(255, 255, 255, 0.3) inset;\n"+ " color: #fff !important;\n"+ " text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n"+ " text-transform: capitalize;\n"+ "}\n"); out.write("</style>"); out.write("</head>"); String logoHeader = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE2LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIzNjAuNTgzcHgiIGhlaWdodD0iNzAuNDYzcHgiIHZpZXdCb3g9IjAgMCAzNjAuNTgzIDcwLjQ2MyIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMzYwLjU4MyA3MC40NjMiCgkgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnPgoJPHBhdGggZmlsbD0iIzFEMUQxQiIgZD0iTTEwLjUwMiwxMzQuMjUydi0xMy4wMzRjMC0wLjM4MS0wLjEzNi0wLjcwNS0wLjQwNC0wLjk3NWMtMC4yNy0wLjI2OS0wLjkzNy0wLjQwMy0xLjMxNy0wLjQwMwoJCWMtMC4zOCwwLTEuMTA4LDAuMTM1LTEuMzc3LDAuNDAzQzcuMTMzLDEyMC41MTMsNywxMjAuODM3LDcsMTIxLjIxOHYyOS41NWMwLDAuMzgxLDAuMTMzLDAuNzA2LDAuNDAzLDAuOTc2CgkJYzAuMjY5LDAuMjY5LDAuOTk3LDAuNDAzLDEuMzc3LDAuNDAzYzAuMzgxLDAsMS4wNDgtMC4xMzUsMS4zMTctMC40MDNjMC4yNjktMC4yNywwLjQwNC0wLjU5NSwwLjQwNC0wLjk3NmwwLjA1LTEzLjE1NwoJCWw3LjQ3OCwwLjAwMWMwLjM4LDAsMC43MDUtMC4xMzQsMC45NzMtMC40MDRjMC4yNy0wLjI2OSwwLjM1NC0wLjgzNCwwLjM1NC0xLjIxNGMwLTAuMzgxLTAuMTM1LTEuMDY2LTAuNDA0LTEuMzM2CgkJYy0wLjI2OC0wLjI2OC0wLjU5My0wLjQwNC0wLjk3My0wLjQwNEwxMC41MDIsMTM0LjI1MnoiLz4KCTxwYXRoIGZpbGw9IiMwMENDNzciIGQ9Ik0yMy40NzksMTM3LjQ4MmMxLjAyMSwwLDEuODUtMC44MjksMS44NS0xLjg1YzAtMS4wMjEtMC44MjktMS44NDgtMS44NS0xLjg0OAoJCWMtMS4wMjMsMC0xLjg1MSwwLjgyOC0xLjg1MSwxLjg0OEMyMS42MjksMTM2LjY1MywyMi40NTYsMTM3LjQ4MiwyMy40NzksMTM3LjQ4MiIvPgoJPHBhdGggZmlsbD0iIzFEMUQxQiIgZD0iTTMxLjY2NywxMjEuMzc5YzAtMC4zODEtMC4xMzYtMC43MDUtMC40MDQtMC45NzVjLTAuMjctMC4yNjktMC45MzctMC40MDMtMS4zMTctMC40MDMKCQljLTAuMzgsMC0xLjEwOCwwLjEzNS0xLjM3NywwLjQwM2MtMC4yNzEsMC4yNy0wLjQwMywwLjU5NC0wLjQwMywwLjk3NXYyOS41NWMwLDAuMzgxLDAuMTMzLDAuNzA1LDAuNDAzLDAuOTc1CgkJYzAuMjY5LDAuMjcsMC45OTcsMC40MDQsMS4zNzcsMC40MDRjMC4zODEsMCwxLjA0OC0wLjEzNSwxLjMxNy0wLjQwNGMwLjI2OS0wLjI3LDAuNDA0LTAuNTk0LDAuNDA0LTAuOTc1VjEyMS4zNzl6Ii8+CjwvZz4KPHBhdGggZmlsbD0iIzAwQ0M3NyIgZD0iTTM4LjY2NywxNzkuMzExYzAsMS44NDItMS40OTMsMy4zMzQtMy4zMzQsMy4zMzRIMy4zMzRjLTEuODQxLDAtMy4zMzQtMS40OTItMy4zMzQtMy4zMzRsMCwwCgljMC0xLjg0MSwxLjQ5My0zLjMzMywzLjMzNC0zLjMzM2gzMS45OTlDMzcuMTc0LDE3NS45NzgsMzguNjY3LDE3Ny40NywzOC42NjcsMTc5LjMxMUwzOC42NjcsMTc5LjMxMXoiLz4KPGc+Cgk8cGF0aCBmaWxsPSIjMUQxRDFCIiBkPSJNNzguOTUsMTkuMTI4Yy0wLjM1LDAuMTU5LTAuNjAzLDAuNDEyLTAuNzYsMC43NmwtNy44MzksMTguMjkyYy0wLjE1OSwwLjM0OC0wLjE1OSwwLjcwNCwwLDEuMDY4CgkJYzAuMTU4LDAuMzYzLDAuNDExLDAuNjI2LDAuNzYsMC43ODRjMC4yNTIsMC4wNjQsMC40NDQsMC4wOTQsMC41NywwLjA5NGMwLjYwMiwwLDEuMDMtMC4yODMsMS4yODQtMC44NTVsNy43OTEtMTguMjkxCgkJYzAuMTU5LTAuMzQ4LDAuMTU5LTAuNzA0LDAtMS4wNjhjLTAuMTU5LTAuMzY0LTAuNDExLTAuNjI1LTAuNzYtMC43ODRTNzkuMjk3LDE4Ljk2OSw3OC45NSwxOS4xMjggTTY1LjEyNCwxOS44ODgKCQljLTAuMTU5LTAuMzQ5LTAuNDExLTAuNjAyLTAuNzYxLTAuNzZjLTAuMzQ3LTAuMTU5LTAuNjk2LTAuMTU5LTEuMDQzLDBjLTAuMzUsMC4xNTktMC42MDMsMC40Mi0wLjc2MSwwLjc4NAoJCWMtMC4xNTgsMC4zNjUtMC4xNTgsMC43MiwwLDEuMDY4bDcuNzcsMTguMTM4YzAuMjUzLDAuNTM4LDAuNjgxLDAuODA5LDEuMjgzLDAuODA5YzAuMjU0LDAsMC40MjktMC4wMzMsMC41MjMtMC4wOTYKCQljMC4zNDgtMC4xNTgsMC42MDItMC40MiwwLjc1OS0wLjc4M2MwLjE1OS0wLjM2NC0xLjA2My0zLjU3OC0xLjIyMS0zLjkyOEw2NS4xMjQsMTkuODg4eiBNNTcuMzQyLDE5LjM4OQoJCWMtMC4yNjUsMC4yNy0wLjM5NywwLjYxLTAuMzk3LDEuMDIxdjE4LjI5MmMwLDAuMzgsMC4xMzIsMC43MTMsMC4zOTcsMC45OTdjMC4yNjQsMC4yODUsMC42LDAuNDI3LDEuMDAzLDAuNDI3CgkJYzAuMzc0LDAsMC42OTMtMC4xNDIsMC45NTgtMC40MjdjMC4yNjQtMC4yODQsMC4zOTctMC42MTcsMC4zOTctMC45OTdWMjAuNDExYzAtMC40MTItMC4xMzMtMC43NTEtMC4zOTctMS4wMjEKCQljLTAuMjY1LTAuMjY5LTAuNTg0LTAuNDA0LTAuOTU4LTAuNDA0QzU3Ljk0MiwxOC45ODUsNTcuNjA2LDE5LjEyLDU3LjM0MiwxOS4zODkgTTkuNjMzLDIyLjU5NlY5LjE5OQoJCWMwLTAuMzgxLTAuMTM2LTAuNzA0LTAuNDA0LTAuOTc0QzguOTU4LDcuOTU2LDguNjM0LDcuODIsOC4yNTQsNy44MmMtMC4zOCwwLTAuNzA2LDAuMTM2LTAuOTc0LDAuNDA0CgkJYy0wLjI3LDAuMjctMC40MDQsMC41OTMtMC40MDQsMC45NzR2MjkuNTVjMCwwLjM4MSwwLjEzNCwwLjcwNiwwLjQwNCwwLjk3NmMwLjI2OCwwLjI2OSwwLjU5NCwwLjQwMiwwLjk3NCwwLjQwMgoJCWMwLjM4LDAsMC43MDQtMC4xMzQsMC45NzQtMC40MDJjMC4yNjktMC4yNywwLjQwNC0wLjU5NSwwLjQwNC0wLjk3NlYyNS4zNTJoMTEuODJjMC4zOCwwLDAuNzA1LTAuMTM0LDAuOTc0LTAuNDA0CgkJYzAuMjY5LTAuMjY5LDAuNDA0LTAuNTk0LDAuNDA0LTAuOTc0YzAtMC4zODEtMC4xMzUtMC43MDQtMC40MDQtMC45NzRjLTAuMjY5LTAuMjY4LTAuNTkzLTAuNDA0LTAuOTc0LTAuNDA0SDkuNjMzeiBNMjguMDU5LDguMjI1CgkJYy0wLjI4MiwwLjI3LTAuNDIsMC41OTMtMC40MiwwLjk3NHYyOS41NWMwLDAuMzgxLDAuMTM5LDAuNzA2LDAuNDIsMC45NzZjMC4yNzksMC4yNjksMC42MDUsMC40MDIsMC45NzksMC40MDIKCQljMC4zNzQsMCwwLjY5NC0wLjEzNCwwLjk1OC0wLjQwMmMwLjI2NC0wLjI3LDAuMzk3LTAuNTk1LDAuMzk3LTAuOTc2VjkuMTk5YzAtMC4zODEtMC4xMzMtMC43MDQtMC4zOTctMC45NzQKCQljLTAuMjY0LTAuMjY5LTAuNTg0LTAuNDA0LTAuOTU4LTAuNDA0QzI4LjY2NSw3LjgyLDI4LjMzOCw3Ljk1NiwyOC4wNTksOC4yMjUiLz4KCTxwYXRoIGZpbGw9IiMwMENDNzciIGQ9Ik0yNS4yNzEsMjUuMTg4YzAuNzYsMCwxLjM3Ny0wLjYxNiwxLjM3Ny0xLjM3NmMwLTAuNzYtMC42MTctMS4zNzYtMS4zNzctMS4zNzZzLTEuMzc2LDAuNjE2LTEuMzc2LDEuMzc2CgkJQzIzLjg5NSwyNC41NzEsMjQuNTExLDI1LjE4OCwyNS4yNzEsMjUuMTg4Ii8+Cgk8cGF0aCBmaWxsPSIjMUQxRDFCIiBkPSJNNTEuMDU1LDI5LjYyMmMwLDQuMjk3LTMuNTAyLDcuNzkzLTcuODA4LDcuNzkzYy00LjMwNSwwLTcuODA5LTMuNDk2LTcuODA5LTcuNzkzCgkJYzAtNC4yOTgsMy41MDMtNy43OTQsNy44MDktNy43OTRDNDcuNTUyLDIxLjgyOCw1MS4wNTUsMjUuMzI0LDUxLjA1NSwyOS42MjIgTTUzLjgyNywzOC43NDJWOC4xNjEKCQljMC0wLjM4Mi0wLjEzMy0wLjcwOC0wLjM5OS0wLjk3OWMtMC4yNjctMC4yNy0wLjU4Ny0wLjQwNi0wLjk2My0wLjQwNmMtMC40MDcsMC0wLjc0MywwLjEzNi0xLjAwOSwwLjQwNgoJCWMtMC4yNjcsMC4yNzEtMC40LDAuNTk4LTAuNCwwLjk3OVYyMi42Yy0xLjkyNS0yLjEzNy00LjcxMy0zLjQ4My03LjgxLTMuNDgzYy01Ljc5NSwwLTEwLjUxLDQuNzEyLTEwLjUxLDEwLjUwNgoJCWMwLDUuNzkzLDQuNzE1LDEwLjUwNSwxMC41MSwxMC41MDVjMy4wOTcsMCw1Ljg4NS0xLjM0Nyw3LjgxLTMuNDgzdjIuMDk5YzAsMC4zODIsMC4xMzMsMC43MDksMC40LDAuOTc5CgkJYzAuMjY2LDAuMjcxLDAuNjAyLDAuNDA1LDEuMDA5LDAuNDA1YzAuMzc2LDAsMC42OTctMC4xMzUsMC45NjMtMC40MDVDNTMuNjk0LDM5LjQ1MSw1My44MjcsMzkuMTI0LDUzLjgyNywzOC43NDIiLz4KPC9nPgo8cmVjdCB4PSIxMTAuOTA4IiBmaWxsPSIjRUZFRkVGIiB3aWR0aD0iMC45ODQiIGhlaWdodD0iNDYuOTAyIi8+CjxnPgoJPGc+CgkJPHBhdGggZmlsbD0iIzAwQ0M3NyIgZD0iTTE0MC4yODQsMjAuNWg0LjA5YzEuODY0LDAsMy4yMTcsMC4yNjUsNC4wNTksMC43OTVjMC44NDIsMC41MzEsMS4yNjMsMS4zNzQsMS4yNjMsMi41MzEKCQkJYzAsMC43ODUtMC4xODQsMS40MjktMC41NTMsMS45MzNzLTAuODU4LDAuODA2LTEuNDcsMC45MDh2MC4wOWMwLjgzMywwLjE4NiwxLjQzNCwwLjUzMywxLjgwMiwxLjA0MgoJCQljMC4zNjksMC41MSwwLjU1MywxLjE4NywwLjU1MywyLjAzMmMwLDEuMTk5LTAuNDMzLDIuMTM0LTEuMjk5LDIuODA1Yy0wLjg2NiwwLjY3MS0yLjA0MiwxLjAwNy0zLjUyOCwxLjAwN2gtNC45MTdWMjAuNXoKCQkJIE0xNDMuMDcsMjUuNzA2aDEuNjE4YzAuNzU1LDAsMS4zMDItMC4xMTcsMS42NDEtMC4zNTFjMC4zMzgtMC4yMzQsMC41MDgtMC42MjEsMC41MDgtMS4xNmMwLTAuNTAzLTAuMTg1LTAuODY1LTAuNTUzLTEuMDgzCgkJCWMtMC4zNjgtMC4yMTktMC45NTEtMC4zMjgtMS43NDgtMC4zMjhoLTEuNDY1VjI1LjcwNnogTTE0My4wNywyNy45MTd2My40MjVoMS44MTZjMC43NjcsMCwxLjMzMy0wLjE0NywxLjY5OS0wLjQ0CgkJCXMwLjU0OC0wLjc0MywwLjU0OC0xLjM0OWMwLTEuMDktMC43NzktMS42MzYtMi4zMzctMS42MzZIMTQzLjA3eiIvPgoJCTxwYXRoIGZpbGw9IiMwMENDNzciIGQ9Ik0xNzQuMjQ4LDI3LjA1NGMwLDIuMTc1LTAuNTM5LDMuODQ4LTEuNjE4LDUuMDE2Yy0xLjA3OSwxLjE2OS0yLjYyNSwxLjc1My00LjYzOSwxLjc1MwoJCQljLTIuMDEzLDAtMy41Ni0wLjU4NC00LjYzOC0xLjc1M2MtMS4wNzktMS4xNjgtMS42MTgtMi44NDctMS42MTgtNS4wMzRjMC0yLjE4NywwLjU0MS0zLjg1OCwxLjYyMy01LjAxMQoJCQljMS4wODItMS4xNTQsMi42MzItMS43Myw0LjY1Mi0xLjczczMuNTY0LDAuNTgxLDQuNjM0LDEuNzQ0UzE3NC4yNDgsMjQuODczLDE3NC4yNDgsMjcuMDU0eiBNMTY0LjY1NiwyNy4wNTQKCQkJYzAsMS40NjgsMC4yNzksMi41NzQsMC44MzYsMy4zMTdjMC41NTgsMC43NDMsMS4zOTEsMS4xMTUsMi40OTksMS4xMTVjMi4yMjQsMCwzLjMzNS0xLjQ3OCwzLjMzNS00LjQzMgoJCQljMC0yLjk2LTEuMTA2LTQuNDQxLTMuMzE3LTQuNDQxYy0xLjEwOSwwLTEuOTQ1LDAuMzczLTIuNTA4LDEuMTJDMTY0LjkzOCwyNC40NzksMTY0LjY1NiwyNS41ODUsMTY0LjY1NiwyNy4wNTR6Ii8+Cgk8L2c+Cgk8Zz4KCQk8cGF0aCBmaWxsPSIjMDBDQzc3IiBkPSJNMTg5LjQyNywyOC42djUuMDQzaC0yLjc4NlYyMC41aDMuODI5YzEuNzg2LDAsMy4xMDcsMC4zMjUsMy45NjUsMC45NzYKCQkJYzAuODU2LDAuNjUsMS4yODUsMS42MzcsMS4yODUsMi45NjJjMCwwLjc3My0wLjIxMywxLjQ2LTAuNjM5LDIuMDYzYy0wLjQyNSwwLjYwMi0xLjAyNywxLjA3NC0xLjgwNywxLjQxNgoJCQljMS45NzgsMi45NTUsMy4yNjcsNC44NjMsMy44NjUsNS43MjZoLTMuMDkyTDE5MC45MSwyOC42SDE4OS40Mjd6IE0xODkuNDI3LDI2LjMzNGgwLjg5OWMwLjg4MSwwLDEuNTMxLTAuMTQ2LDEuOTUtMC40NAoJCQljMC40Mi0wLjI5MywwLjYzLTAuNzU1LDAuNjMtMS4zODRjMC0wLjYyMy0wLjIxNS0xLjA2Ni0wLjY0My0xLjMzMWMtMC40MjktMC4yNjQtMS4wOTMtMC4zOTYtMS45OTEtMC4zOTZoLTAuODQ2VjI2LjMzNHoiLz4KCTwvZz4KCTxnPgoJCTxwYXRoIGZpbGw9IiMwMENDNzciIGQ9Ik0yMjAuMDk3LDMzLjY0M2gtMy41NDJsLTUuNzE3LTkuOTQyaC0wLjA4MWMwLjExMywxLjc1NiwwLjE3MSwzLjAwOSwwLjE3MSwzLjc1OHY2LjE4NWgtMi40OVYyMC41aDMuNTE1CgkJCWw1LjcwOCw5Ljg0M2gwLjA2M2MtMC4wOS0xLjcwOC0wLjEzNS0yLjkxNi0wLjEzNS0zLjYyM1YyMC41aDIuNTA4VjMzLjY0M3oiLz4KCTwvZz4KCTxnPgoJCTxwYXRoIGZpbGw9IiMwMENDNzciIGQ9Ik0yNTUuMTExLDMwLjE0NmMwLDEuMTU3LTAuNDIsMi4wNTktMS4yNTksMi43MDZjLTAuODM5LDAuNjQ3LTEuOTc4LDAuOTcxLTMuNDE2LDAuOTcxCgkJCWMtMS41NTksMC0yLjc1Ny0wLjIwMS0zLjU5Ni0wLjYwMnYtMS40NzVjMC41MzksMC4yMjgsMS4xMjYsMC40MDgsMS43NjIsMC41NGMwLjYzNSwwLjEzMiwxLjI2NSwwLjE5OCwxLjg4OCwwLjE5OAoJCQljMS4wMTksMCwxLjc4Ni0wLjE5MywyLjMwMi0wLjU4YzAuNTE1LTAuMzg3LDAuNzcyLTAuOTI1LDAuNzcyLTEuNjE0YzAtMC40NTYtMC4wOTEtMC44MjktMC4yNzQtMS4xMTkKCQkJYy0wLjE4My0wLjI5MS0wLjQ4OC0wLjU1OS0wLjkxNi0wLjgwNWMtMC40MjktMC4yNDYtMS4wODEtMC41MjQtMS45NTYtMC44MzZjLTEuMjIyLTAuNDM4LTIuMDk2LTAuOTU2LTIuNjItMS41NTUKCQkJcy0wLjc4Ni0xLjM4MS0wLjc4Ni0yLjM0NmMwLTEuMDEzLDAuMzgtMS44MTksMS4xNDItMi40MThjMC43NjEtMC41OTksMS43NjgtMC44OTksMy4wMjEtMC44OTljMS4zMDYsMCwyLjUwOCwwLjI0LDMuNjA0LDAuNzE5CgkJCWwtMC40NzcsMS4zMzFjLTEuMDg1LTAuNDU2LTIuMTQtMC42ODMtMy4xNjQtMC42ODNjLTAuODEsMC0xLjQ0MSwwLjE3NC0xLjg5NiwwLjUyMWMtMC40NTYsMC4zNDgtMC42ODQsMC44My0wLjY4NCwxLjQ0NwoJCQljMCwwLjQ1NiwwLjA4NCwwLjgyOSwwLjI1MiwxLjExOWMwLjE2NywwLjI5MSwwLjQ1LDAuNTU3LDAuODUsMC44YzAuMzk4LDAuMjQzLDEuMDA4LDAuNTExLDEuODI5LDAuODA1CgkJCWMxLjM3OCwwLjQ5MiwyLjMyNiwxLjAxOSwyLjg0NSwxLjU4MkMyNTQuODUyLDI4LjUxNiwyNTUuMTExLDI5LjI0NywyNTUuMTExLDMwLjE0NnoiLz4KCTwvZz4KCTxnPgoJCTxwYXRoIGZpbGw9IiMwMENDNzciIGQ9Ik0yNzQuNzk0LDMzLjY0M2gtNy4zMjZWMjAuNWg3LjMyNnYxLjM1N2gtNS43OTh2NC4yMzRoNS40NDd2MS4zNDloLTUuNDQ3djQuODM2aDUuNzk4VjMzLjY0M3oiLz4KCTwvZz4KCTxnPgoJCTxwYXRoIGZpbGw9IiMwMENDNzciIGQ9Ik0yOTIuOTc5LDIxLjY3OGMtMS40NDQsMC0yLjU4NSwwLjQ4MS0zLjQyMSwxLjQ0M3MtMS4yNTQsMi4yNzktMS4yNTQsMy45NTEKCQkJYzAsMS43MiwwLjQwMywzLjA0OSwxLjIwOSwzLjk4N3MxLjk1NSwxLjQwNywzLjQ0NywxLjQwN2MwLjkxNywwLDEuOTYzLTAuMTY1LDMuMTM4LTAuNDk0djEuMzM5CgkJCWMtMC45MTEsMC4zNDEtMi4wMzUsMC41MTItMy4zNzEsMC41MTJjLTEuOTM2LDAtMy40My0wLjU4Ny00LjQ4MS0xLjc2MmMtMS4wNTItMS4xNzUtMS41NzctMi44NDQtMS41NzctNS4wMDcKCQkJYzAtMS4zNTQsMC4yNTMtMi41NDEsMC43NTktMy41NmMwLjUwNy0xLjAxOSwxLjIzOC0xLjgwNCwyLjE5NC0yLjM1NWMwLjk1NS0wLjU1MSwyLjA4MS0wLjgyNywzLjM3NS0wLjgyNwoJCQljMS4zNzksMCwyLjU4MywwLjI1MiwzLjYxNCwwLjc1NWwtMC42NDcsMS4zMTNDMjk0Ljk2OCwyMS45MTIsMjkzLjk3MywyMS42NzgsMjkyLjk3OSwyMS42Nzh6Ii8+Cgk8L2c+Cgk8Zz4KCQk8cGF0aCBmaWxsPSIjMDBDQzc3IiBkPSJNMzE4LjU1OCwyMC41djguNTA0YzAsMS40OTktMC40NTMsMi42NzYtMS4zNTcsMy41MzNjLTAuOTA1LDAuODU3LTIuMTQ4LDEuMjg1LTMuNzMsMS4yODUKCQkJcy0yLjgwNy0wLjQzMS0zLjY3My0xLjI5NGMtMC44NjYtMC44NjMtMS4yOTktMi4wNDktMS4yOTktMy41NlYyMC41aDEuNTI4djguNTc2YzAsMS4wOTcsMC4zLDEuOTM4LDAuODk5LDIuNTI2CgkJCWMwLjU5OSwwLjU4NywxLjQ3OSwwLjg4MSwyLjY0MywwLjg4MWMxLjEwOCwwLDEuOTYzLTAuMjk1LDIuNTYyLTAuODg1YzAuNi0wLjU5LDAuODk5LTEuNDM3LDAuODk5LTIuNTRWMjAuNUgzMTguNTU4eiIvPgoJCTxwYXRoIGZpbGw9IiMwMENDNzciIGQ9Ik0zMzMuMTkzLDI4LjE3N3Y1LjQ2NmgtMS41MjhWMjAuNWgzLjYwNWMxLjYxMSwwLDIuODAzLDAuMzA5LDMuNTczLDAuOTI2CgkJCWMwLjc3LDAuNjE4LDEuMTU0LDEuNTQ2LDEuMTU0LDIuNzg3YzAsMS43MzgtMC44ODEsMi45MTMtMi42NDMsMy41MjRsMy41NjksNS45MDZoLTEuODA4bC0zLjE4Mi01LjQ2NkgzMzMuMTkzeiBNMzMzLjE5MywyNi44NjUKCQkJaDIuMDk1YzEuMDc5LDAsMS44Ny0wLjIxNCwyLjM3My0wLjY0M2MwLjUwNC0wLjQyOCwwLjc1NS0xLjA3MSwwLjc1NS0xLjkyOGMwLTAuODY5LTAuMjU2LTEuNDk1LTAuNzY5LTEuODc5CgkJCWMtMC41MTItMC4zODMtMS4zMzUtMC41NzUtMi40NjgtMC41NzVoLTEuOTg2VjI2Ljg2NXoiLz4KCTwvZz4KCTxnPgoJCTxwYXRoIGZpbGw9IiMwMENDNzciIGQ9Ik0zNjAuMDMzLDMzLjY0M2gtNy4zMjZWMjAuNWg3LjMyNnYxLjM1N2gtNS43OTh2NC4yMzRoNS40NDd2MS4zNDloLTUuNDQ3djQuODM2aDUuNzk4VjMzLjY0M3oiLz4KCTwvZz4KPC9nPgo8L3N2Zz4K"; out.write("<body class=\"error-page\">"); out.write(" <header class=\"hdiv-header\"><img style=\"padding-left: 50px\" src=\"" + logoHeader + "\" /></header>"); out.write(" <section class=\"hdiv-error-box\">"); String logo = "data:image/png;base64,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"; out.write(" <div class=\"hdiv-icon-box\"><img src=\"" + logo + "\" height=\"75\" width=\"75\" /></div>"); out.write(" <div class=\"hdiv-message-box\">"); out.write(" <h1 class=\"unauthorized\">Unauthorized access</h1>"); out.write(" <div style=\"margin-top:58px;\">"); out.write(" <a href=\"javascript: window.history.back()\" class=\"hdiv-btn hdiv-btn-primary btn-small\"><i class=\"icon-long-arrow-left\"></i> Go back</a>  "); out.write(" <a href=\"" + context.getContextPath() + "\" class=\"hdiv-btn btn-small\">Home</a>"); out.write(" </div>"); if (editableErrors != null) { out.write(" <ul>"); for (ValidatorError error : editableErrors) { out.write(" <li>Values for field '" + error.getParameterName() + "' are not correct: "); String values = error.getParameterValue(); // Escape HTML characters values = HtmlUtils.htmlEscape(values); out.write(values); out.write(" </li>"); } out.write(" </ul>"); } out.write(" </div>"); out.write("</section>"); out.write("</body>"); out.write("</html>"); // @formatter:on } }