Skip to content

Commit

Permalink
Merge pull request #2483 from navikt/kafka-melding-min-side
Browse files Browse the repository at this point in the history
Skal ha et forvaltningsendepunkt for å aktivere og deaktivere persone…
  • Loading branch information
charliemidtlyng authored Dec 20, 2023
2 parents bcae6d2 + 30966ea commit e354269
Show file tree
Hide file tree
Showing 7 changed files with 125 additions and 2 deletions.
4 changes: 3 additions & 1 deletion .deploy/preprod.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -118,4 +118,6 @@ spec:
envFrom:
- secret: familie-ef-sak
- secret: familie-ef-sak-unleash-api-token
leaderElection: true
leaderElection: true
kafka:
pool: nav-dev
2 changes: 2 additions & 0 deletions .deploy/prod.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -113,4 +113,6 @@ spec:
- secret: familie-ef-sak
- secret: familie-ef-sak-unleash-api-token
leaderElection: true
kafka:
pool: nav-prod

10 changes: 10 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
<prosessering.version>2.20231026103714_2f17845</prosessering.version>
<start-class>no.nav.familie.ef.sak.ApplicationKt</start-class>
<kontrakter.version>3.0_20231206111937_3c866af</kontrakter.version>
<mikrofrontend.builder.version>20230704114948-74aa2e9</mikrofrontend.builder.version>
<eksterne.kontrakter.bisys.version>2.0_20230214104704_706e9c0</eksterne.kontrakter.bisys.version>
<cucumber.version>7.14.1</cucumber.version>

Expand Down Expand Up @@ -94,6 +95,10 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
Expand Down Expand Up @@ -170,6 +175,11 @@
<artifactId>felles</artifactId>
<version>${kontrakter.version}</version>
</dependency>
<dependency>
<groupId>no.nav.tms.mikrofrontend.selector</groupId>
<artifactId>builder</artifactId>
<version>${mikrofrontend.builder.version}</version>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package no.nav.familie.ef.sak.forvaltning

import no.nav.familie.ef.sak.felles.dto.PersonIdentDto
import no.nav.familie.ef.sak.infrastruktur.exception.feilHvisIkke
import no.nav.familie.ef.sak.infrastruktur.featuretoggle.FeatureToggleService
import no.nav.familie.ef.sak.infrastruktur.featuretoggle.Toggle
import no.nav.familie.ef.sak.infrastruktur.sikkerhet.SikkerhetContext
import no.nav.familie.ef.sak.minside.MinSideKafkaProducerService
import no.nav.security.token.support.core.api.ProtectedWithClaims
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController

@RestController
@RequestMapping("/api/minside/forvaltning/")
@ProtectedWithClaims(issuer = "azuread")
class MinsideForvaltningsController(
private val featureToggleService: FeatureToggleService,
private val minSideKafkaProducerService: MinSideKafkaProducerService,
) {
@PostMapping("aktiver")
fun aktiverPersonForMinSide(@RequestBody personIdentDto: PersonIdentDto) {
feilHvisIkke(erUtviklerMedVeilderrolle()) { "Kan kun kjøres av utvikler med veilederrolle" }
validerPersonIdent(personIdentDto)
minSideKafkaProducerService.aktiver(personIdent = personIdentDto.personIdent)
}

@PostMapping("deaktiver")
fun deaktiverPersonForMinSide(@RequestBody personIdentDto: PersonIdentDto) {
feilHvisIkke(erUtviklerMedVeilderrolle()) { "Kan kun kjøres av utvikler med veilederrolle" }
validerPersonIdent(personIdentDto)
minSideKafkaProducerService.deaktiver(personIdent = personIdentDto.personIdent)
}

private fun validerPersonIdent(personIdentDto: PersonIdentDto) {
if (personIdentDto.personIdent.length != 11) {
error("PersonIdent må ha 11 siffer")
}
}

private fun erUtviklerMedVeilderrolle(): Boolean =
SikkerhetContext.erSaksbehandler() && featureToggleService.isEnabled(Toggle.UTVIKLER_MED_VEILEDERRROLLE)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package no.nav.familie.ef.sak.minside

import no.nav.familie.log.IdUtils
import no.nav.familie.log.mdc.MDCConstants
import no.nav.tms.microfrontend.MicrofrontendMessageBuilder
import no.nav.tms.microfrontend.Sensitivitet
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import org.slf4j.MDC
import org.springframework.beans.factory.annotation.Value
import org.springframework.kafka.core.KafkaTemplate
import org.springframework.stereotype.Service

@Service
class MinSideKafkaProducerService(private val kafkaTemplate: KafkaTemplate<String, String>) {

@Value("\${MIN_SIDE_TOPIC}")
lateinit var topic: String
private val logger: Logger = LoggerFactory.getLogger(this::class.java)

fun aktiver(personIdent: String) {
val melding = MicrofrontendMessageBuilder.enable {
ident = personIdent
initiatedBy = "teamfamilie"
microfrontendId = "familie-ef-mikrofrontend-minside"
sensitivitet = Sensitivitet.HIGH
}.text()
val callId = MDC.get(MDCConstants.MDC_CALL_ID) ?: IdUtils.generateId()
logger.info("Sender aktivere minside melding for callId=$callId")
kafkaTemplate.send(topic, callId, melding)
}

fun deaktiver(personIdent: String) {
val melding = MicrofrontendMessageBuilder.disable {
ident = personIdent
initiatedBy = "teamfamilie"
microfrontendId = "familie-ef-mikrofrontend-minside"
}.text()
val callId = MDC.get(MDCConstants.MDC_CALL_ID) ?: IdUtils.generateId()
logger.info("Sender deaktivere minside melding for callId=$callId")
kafkaTemplate.send(topic, callId, melding)
}
}
6 changes: 5 additions & 1 deletion src/main/resources/application-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,8 @@ rolle:
kode7: "ea930b6b-9397-44d9-b9e6-f4cf527a632a" # 0000-GA-Fortrolig_Adresse
egenAnsatt: "dbe4ad45-320b-4e9a-aaa1-73cca4ee124d" # 0000-GA-Egne_ansatte

prosessering.rolle: "928636f4-fd0d-4149-978e-a6fb68bb19de" # 0000-GA-STDAPPS 928636f4-fd0d-4149-978e-a6fb68bb19de
prosessering.rolle: "928636f4-fd0d-4149-978e-a6fb68bb19de" # 0000-GA-STDAPPS 928636f4-fd0d-4149-978e-a6fb68bb19de
KAFKA_BROKERS: hostname:1234
KAFKA_KEYSTORE_PATH: kafkaKeystorePath
KAFKA_CREDSTORE_PASSWORD: kafkaCredstorePassword
KAFKA_TRUSTSTORE_PATH: kafkaTruststorePath
18 changes: 18 additions & 0 deletions src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,22 @@ spring:
connection-test-query: "select 1"
max-lifetime: 30000
minimum-idle: 1
kafka:
bootstrap-servers: ${KAFKA_BROKERS}
properties:
security:
protocol: SSL
ssl:
keystore:
type: PKCS12
location: ${KAFKA_KEYSTORE_PATH}
password: ${KAFKA_CREDSTORE_PASSWORD}
truststore:
type: PKCS12
location: ${KAFKA_TRUSTSTORE_PATH}
password: ${KAFKA_CREDSTORE_PASSWORD}
producer:
acks: all

management:
endpoint.health.show-details: always
Expand Down Expand Up @@ -260,6 +276,8 @@ G_OMREGNING_CRON_EXPRESSION: 0 0 15 * * TUE
FINN_BEHANDLINGER_UTEN_OPPGAVE_CRON_EXPRESSION: 0 0 8 * * MON #kl 08:00 hver mandag
FINN_BEHANDLINGER_MED_GAMMEL_G_CRON_EXPRESSION: 0 0 8 1 * * #kl 08:00 den 1. hver måned

MIN_SIDE_TOPIC: min-side.aapen-microfrontend-v1

rolle:
veileder: "31778fd8-3b71-4867-8db6-a81235fbe001"
saksbehandler: "6406aba2-b930-41d3-a85b-dd13731bc974"
Expand Down

0 comments on commit e354269

Please sign in to comment.