Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Skal ha et forvaltningsendepunkt for å aktivere og deaktivere persone… #2483

Merged
merged 2 commits into from
Dec 20, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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