<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ 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; } %> <%@ taglib prefix="fsp" uri="FIRSTpersonalisation" %> Soluções Completas de Quarto de Banho - PARA O SEU QUARTO DE BANHO | GROHE - Grohe AG Company Page

SOLUÇÕES COMPLETAS DE CASA DE BANHO

O seu Quarto de Banho Digital

Banho seguro para todas as gerações

Casas de banho para Idosos

Crie uma zona de duche luxuosa

Termostática Cube & Sistema de Duche

Crie soluções criativas para a casa de banho com o GROHE Rapid SL

Substitua o seu sistema de duche

Soluções para casas de banho pequenas

Utilizamos cookies para garantir que proporcionamos a melhor experiência no nosso website e para melhorar a relevância das nossas comunicações consigo. Se continuar a navegar no nosso website, presumiremos que aceita a utilização de cookies no website da GROHE. Pode encontrar informações detalhadas sobre como os cookies são utilizados na seguinte página: Privacidade