<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" trimDirectiveWhitespaces="true" %> <%@ taglib prefix="fsp" uri="FIRSTpersonalisation" %> <%! /** * Checks if goven roles are contained by roles cookie. checkAllRoles defines, if all roles need to be in cookie (-> true) or just one of them (-> false) **/ private boolean checkRoles(Cookie[] cookies, java.util.List roles, boolean checkAllRoles, boolean negateCondition) { boolean returnValue = true; if (roles!= null && !roles.isEmpty()) { java.util.List currentRoles = new java.util.ArrayList(); if (cookies != null) { for (Cookie currentCookie : cookies) { if (currentCookie.getName().equals("GRIT.GWA.ROLES")) { String value = currentCookie.getValue(); if (value != null && !"".equals(value)) { String decryptValue = decrypt(value); if (decryptValue != null) { String[] valueArray = decryptValue.split(","); java.util.Collections.addAll(currentRoles, valueArray); } } } } } if (negateCondition) { if (checkAllRoles) { // if one role from roles is contained by currentRoles, return true, // because we need to check if ALL roles from roles are contained by currentRoles returnValue = true; for (Object role : roles) { returnValue = returnValue && currentRoles.contains((String)role); } } else { returnValue = true; // if one role from roles is contained by currentRoles, return false for (Object role : roles) { if (currentRoles.contains((String)role)) { returnValue = false; } } } } else { // regular check if (checkAllRoles) { // all roles from roles must be contained by currentRoles returnValue = currentRoles.containsAll(roles); } else { returnValue = false; // only one role from roles must be contained by currentRoles for (Object role : roles) { if (currentRoles.contains((String)role)) { returnValue = true; } } } } } return returnValue; } /** * Compute key for decryption **/ private static javax.crypto.spec.SecretKeySpec setKey(char[] myKey) { java.security.MessageDigest sha; javax.crypto.spec.SecretKeySpec secretKey = null; try { final java.nio.ByteBuffer bb = java.nio.charset.StandardCharsets.UTF_8.encode(java.nio.CharBuffer.wrap(myKey)); byte[] key = new byte[bb.remaining()]; bb.get(key); sha = java.security.MessageDigest.getInstance("SHA-256"); key = sha.digest(key); key = java.util.Arrays.copyOf(key, 16); secretKey = new javax.crypto.spec.SecretKeySpec(key, "AES"); } catch (java.security.NoSuchAlgorithmException e) { // do nothing } return secretKey; } /** * Decrypt given string **/ public static String decrypt(String strToDecrypt) { try { javax.crypto.spec.SecretKeySpec secretKey = setKey("CHANGE-ME-GROHEWEBAPP".toCharArray()); javax.crypto.Cipher cipher = javax.crypto.Cipher.getInstance("AES"); cipher.init(javax.crypto.Cipher.DECRYPT_MODE, secretKey); return new String(cipher.doFinal(java.util.Base64.getUrlDecoder().decode(strToDecrypt))); } catch (Exception e) { // do nothing } return ""; } private String showRoles(Cookie[] cookies) { String returnValue = ""; if (cookies != null) { for (Cookie currentCookie : cookies) { if (currentCookie.getName().equals("GRIT.GWA.ROLES")) { String value = currentCookie.getValue(); if (value != null && !"".equals(value)) { returnValue = decrypt(value); } } } } return returnValue; } private boolean checkRolesSet(Cookie[] cookies) { boolean returnValue = false; if (cookies != null) { for (Cookie currentCookie : cookies) { if (currentCookie.getName().equals("GRIT.GWA.ROLES")) { returnValue = true; break; } } } return returnValue; } public boolean includeContentByTargetGroup(String allowedGroups, String targetGroup) { return allowedGroups.contains(targetGroup); } %> <% java.util.Set possibleCookieValues = new java.util.HashSet(); possibleCookieValues.add("planner"); possibleCookieValues.add("pro"); possibleCookieValues.add("daa"); possibleCookieValues.add("designer"); possibleCookieValues.add("showroom"); possibleCookieValues.add("end"); possibleCookieValues.add("inst"); possibleCookieValues.add("architect"); possibleCookieValues.add("aap"); possibleCookieValues.add("projects"); java.lang.String targetGroupCookieValue = ""; // DT-15994 String endCookieName = "target_group"; String endCookieValue = "end"; if(request != null){ Cookie[] cookies = request.getCookies(); if(cookies != null){ for(Cookie currentCookie : cookies){ // delete existing "target_group" cookie if they don't "end" as value (not endconsumer) if(currentCookie.getName().equals(endCookieName)){ if(currentCookie.getValue() != endCookieValue){ currentCookie.setPath("/"); currentCookie.setMaxAge(0); } } } } // create new "target_group" cookie with value "end" Cookie endCookie = new Cookie(endCookieName, endCookieValue); endCookie.setPath("/"); endCookie.setMaxAge(60 * 60 * 24 * 365); response.addCookie(endCookie); } %> <%! /** * Check, validate and provide url parameters for target group navigation links **/ private String catUrlParameters(HttpServletRequest request) { java.lang.StringBuilder returnValue = new java.lang.StringBuilder(); java.util.Enumeration parameterNames = request.getParameterNames(); String param = ""; String value = ""; String paramAdd = "?"; String paramRef = "="; while(parameterNames.hasMoreElements()) { param = parameterNames.nextElement(); value = request.getParameter(param); if (isValidParam(param, value)) { returnValue.append(paramAdd); returnValue.append(param); returnValue.append(paramRef); returnValue.append(value); } } if (returnValue.length() > 0) { returnValue.append("&"); } else { returnValue.append(paramAdd); } return returnValue.toString(); } private boolean isValidParam(String param, String value) { boolean returnValue = param.equals("redirected_from_hubpage"); String[] items = {"!", "?", "<", ">", "'", "\""}; for (String work : items) { returnValue = returnValue && !value.contains(work); } return returnValue; } private String getSearchIdRequestParam(HttpServletRequest request) { String searchIdRequestParameter = ""; if(request != null) { searchIdRequestParameter = request.getParameter("search-id"); } return searchIdRequestParameter; } %> <%@ taglib prefix="fsp" uri="FIRSTpersonalisation" %> Patent Notice | GROHE <% if(request != null){ java.lang.String param = request.getParameter("article"); if(param == null){ %> <% } } %>

Patent Notice

<% boolean showContent1710805070304 = true; if(showContent1710805070304) {%>

Grohe is licensed to use map-related services on this website under: U.S. Patent Nos., 7,555,725, 8,468,464, 570,047, 10,365,795, and 10,444,943; U.S. Patent Application No. 16/516,215; European Patent Nos. EP 1 433 132 amd EP 2 336 970; European Patent Application No. EP 16161233.8-1972; and Japanese Patent No. JP 5102124; and any patent or parent application which claims priority of US Application No. 60/287,339 or any of the above patents and patent applications.

<% } // end of if %>