Skip to content

Commit

Permalink
legg til html sanitation på i18n
Browse files Browse the repository at this point in the history
  • Loading branch information
olesls committed Aug 20, 2024
1 parent 5047dd2 commit d23acc8
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 16 deletions.
8 changes: 8 additions & 0 deletions behovsmeldingsmodell/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,14 @@ group = "no.nav.hjelpemidler"
version = System.getenv("VERSION_TAG") ?: "local"

dependencies {
/*
TODO: Det tryggeste er å ha denne avhengigheten her, slik at vi kan sikre at den alltid blir brukt,
men samtidig vi vil helst ikke ha ekstra avhengigheter her. Kan vi gjøre det på en bedre måte?
*/
// TODO: legg til i hm-katalog
// OWASP
implementation("com.googlecode.owasp-java-html-sanitizer:owasp-java-html-sanitizer:20240325.1")

testImplementation(libs.kotlin.test.junit5)
testImplementation(libs.bundles.jackson)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import no.nav.hjelpemidler.behovsmeldingsmodell.Veiadresse
import no.nav.hjelpemidler.behovsmeldingsmodell.v1.Bytte
import no.nav.hjelpemidler.behovsmeldingsmodell.v1.Godkjenningskurs
import no.nav.hjelpemidler.behovsmeldingsmodell.v1.Hast
import org.owasp.html.HtmlPolicyBuilder
import java.time.LocalDate
import java.util.UUID

Expand Down Expand Up @@ -160,16 +161,23 @@ data class Tekst(
init {
require(
(i18n != null && fritekst == null) ||
(i18n == null && fritekst != null),
(i18n == null && fritekst != null),
) { "Én, og bare én, av i18n eller fritekst må ha verdi. Mottok i18n <$i18n> og fritekst <$fritekst>" }
}
}

private val htmlPolicy = HtmlPolicyBuilder().allowElements("em", "strong").toFactory()

data class I18n(
val nb: String,
val nn: String,
) {
constructor(norsk: String) : this(nb = norsk, nn = norsk) // For enkle tekster som er like på begge målformer

init {
require(nb == htmlPolicy.sanitize(nb)) { "Ugyldig HTML i nb" }
require(nn == htmlPolicy.sanitize(nn)) { "Ugyldig HTML i nn" }
}
}

data class Varsel(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -186,17 +186,6 @@ fun varsler(hm: Hjelpemiddel): List<Varsel> {
)
}

if (hm.sengInfo?.påkrevdBehov == BehovForSeng.DYSFUNKSJONELT_SØVNMØNSTER) {
varsler.add(
Varsel(
I18n(
nb = "Med dysfunksjonelt søvnmønster menes: Varige og vesentlige problemer med å sovne, urolig nattesøvn, meget tidlig oppvåkning om morgenen og/eller dårlig søvnkvalitet som fører til nedsatt funksjon på dagtid. Den nedsatte funksjonen på dagtid må føre til problemer med å utføre dagliglivets nødvendige aktiviteter.",
nn = "Med dysfunksjonelt søvnmønster siktar ein til: Varige og vesentlege problem med å sovna, uroleg nattesøvn, svært tidleg oppvakning om morgonen og/eller dårleg søvnkvalitet som fører til nedsett funksjon på dagtid. Den nedsette funksjonen på dagtid må føra til problem med å utføra dei nødvendige aktivitetane til dagleglivet."
), Varseltype.INFO
)
)
}

if (hm.posisjoneringsputeForBarnInfo?.brukerErOver26År == true) {
varsler.add(Varsel(over26År, Varseltype.WARNING))
}
Expand Down Expand Up @@ -839,8 +828,10 @@ fun sengeinfo(hm: Hjelpemiddel): List<Opplysning> {
val tekst =
if (hm.sengInfo.brukerOppfyllerPåkrevdBehov == true) {
Tekst(
nb = "Barnet har en varig funksjonsnedsettelse som gir et dysfunksjonelt søvnmønster slik at barnet får for lite søvn. Dette fører til at barnet får nedsatt funksjonsevne på dagtid.",
nn = "Barnet har ei varig funksjonsnedsetjing som gir eit dysfunksjonelt søvnmønster slik at barnet får for lite søvn. Dette fører til at barnet får nedsett funksjonsevne på dagtid.",
I18n(
nb = "Barnet har en varig funksjonsnedsettelse som gir et dysfunksjonelt søvnmønster slik at barnet får for lite søvn. Dette fører til at barnet får nedsatt funksjonsevne på dagtid.",
nn = "Barnet har ei varig funksjonsnedsetjing som gir eit dysfunksjonelt søvnmønster slik at barnet får for lite søvn. Dette fører til at barnet får nedsett funksjonsevne på dagtid.",
), begrepsforklaring = dysfunksjoneltSøvnmønsterForklaring
)
} else {
Tekst(
Expand Down Expand Up @@ -892,8 +883,10 @@ fun sengeinfo(hm: Hjelpemiddel): List<Opplysning> {
Opplysning(
ledetekst = behovForSengLabel,
tekst = Tekst(
nb = "Barnet har en varig funksjonsnedsettelse som gir et dysfunksjonelt søvnmønster slik at barnet får for lite søvn. Dette fører til at barnet får nedsatt funksjonsevne på dagtid.",
nn = "Barnet har ei varig funksjonsnedsetjing som gir eit dysfunksjonelt søvnmønster slik at barnet får for lite søvn. Dette fører til at barnet får nedset funksjonsevne på dagtid.",
I18n(
nb = "Barnet har en varig funksjonsnedsettelse som gir et dysfunksjonelt søvnmønster slik at barnet får for lite søvn. Dette fører til at barnet får nedsatt funksjonsevne på dagtid.",
nn = "Barnet har ei varig funksjonsnedsetjing som gir eit dysfunksjonelt søvnmønster slik at barnet får for lite søvn. Dette fører til at barnet får nedset funksjonsevne på dagtid.",
), begrepsforklaring = dysfunksjoneltSøvnmønsterForklaring
),
),
)
Expand Down Expand Up @@ -1407,3 +1400,7 @@ private val formidlerBekrefterAt = I18n(nb = "Formidler bekrefter at", nn = "For
private val behov = I18n("Behov")
private val bruksområde = I18n("Bruksområde")
private val grunnenTilBehovet = I18n("Grunnen til behovet")
private val dysfunksjoneltSøvnmønsterForklaring = I18n(
nb = "Med dysfunksjonelt søvnmønster menes: Varige og vesentlige problemer med å sovne, urolig nattesøvn, meget tidlig oppvåkning om morgenen og/eller dårlig søvnkvalitet som fører til nedsatt funksjon på dagtid. Den nedsatte funksjonen på dagtid må føre til problemer med å utføre dagliglivets nødvendige aktiviteter.",
nn = "Med dysfunksjonelt søvnmønster siktar ein til: Varige og vesentlege problem med å sovna, uroleg nattesøvn, svært tidleg oppvakning om morgonen og/eller dårleg søvnkvalitet som fører til nedsett funksjon på dagtid. Den nedsette funksjonen på dagtid må føra til problem med å utføra dei nødvendige aktivitetane til dagleglivet."
)

0 comments on commit d23acc8

Please sign in to comment.