/**
* Copyright (c) 2009-2014 Câmara dos Deputados. Todos os direitos reservados.
*
* e-Democracia é um software livre; você pode redistribuí-lo e/ou modificá-lo dentro
* dos termos da Licença Pública Geral Menor GNU como publicada pela Fundação do
* Software Livre (FSF); na versão 2.1 da Licença, ou (na sua opinião) qualquer versão.
*
* Este programa é distribuído na esperança de que possa ser útil, mas SEM NENHUMA GARANTIA;
* sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR.
* Veja a Licença Pública Geral Menor GNU para maiores detalhes.
*/
package br.gov.camara.edemocracia.portlets.chat.portlet.beans.components;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import org.owasp.html.HtmlPolicyBuilder;
import org.owasp.html.PolicyFactory;
/**
* Conversor de Strings provenientes de componentes de texto rico que remove elementos inseguros
* do texto, como códigos javascript.
* @author Victor Bortone
*/
@FacesConverter("br.gov.camara.edemocracia.SafeRichTextConverter")
public class SafeRichTextConverter implements Converter {
private static final PolicyFactory POLICY = new HtmlPolicyBuilder()
.allowCommonInlineFormattingElements()
.allowCommonBlockElements()
.allowStandardUrlProtocols()
.allowWithoutAttributes("div", "span")
.allowAttributes("style").globally()
.allowAttributes("href").onElements("a")
.allowAttributes("size", "face", "color", "id").onElements("font")
.allowElements("a", "em", "dfn", "hr")
.allowStandardUrlProtocols()
.toFactory();
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
if (value == null) {
return null;
}
return POLICY.sanitize(value);
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if (value == null) {
return "";
}
return value.toString();
}
}