Skip to content

Commit

Permalink
Fjærnet context receivers fra bekreftelse-api
Browse files Browse the repository at this point in the history
  • Loading branch information
nilsmsa committed Sep 27, 2024
1 parent 5019eb1 commit 1652948
Show file tree
Hide file tree
Showing 5 changed files with 50 additions and 66 deletions.
6 changes: 0 additions & 6 deletions apps/bekreftelse-api/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -84,12 +84,6 @@ tasks.withType<Test>().configureEach {
useJUnitPlatform()
}

tasks.withType<KotlinCompile>().configureEach {
compilerOptions {
freeCompilerArgs.add("-Xcontext-receivers")
}
}

tasks.withType(Jar::class) {
manifest {
attributes["Implementation-Version"] = project.version
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,42 +21,36 @@ fun Route.bekreftelseRoutes(applicationContext: ApplicationContext) {
route("/api/v1") {
authenticate("idporten", "tokenx", "azure") {
get("/tilgjengelige-bekreftelser") {
with(resolveRequest()) {
with(authorizationService.authorize(TilgangType.LESE)) {
val response = bekreftelseService.finnTilgjengeligBekreftelser(
TilgjengeligeBekreftelserRequest(sluttbruker.identitetsnummer),
useMockData
)

call.respond(HttpStatusCode.OK, response)
}
}
val requestContext = resolveRequest()
val securityContext = authorizationService.authorize(requestContext, TilgangType.LESE)
val response = bekreftelseService.finnTilgjengeligBekreftelser(
securityContext,
TilgjengeligeBekreftelserRequest(securityContext.sluttbruker.identitetsnummer),
requestContext.useMockData
)
call.respond(HttpStatusCode.OK, response)
}

post<TilgjengeligeBekreftelserRequest>("/tilgjengelige-bekreftelser") { request ->
with(resolveRequest(request.identitetsnummer)) {
with(authorizationService.authorize(TilgangType.LESE)) {
val response = bekreftelseService.finnTilgjengeligBekreftelser(
request,
useMockData
)

call.respond(HttpStatusCode.OK, response)
}
}
val requestContext = resolveRequest(request.identitetsnummer)
val securityContext = authorizationService.authorize(requestContext, TilgangType.LESE)
val response = bekreftelseService.finnTilgjengeligBekreftelser(
securityContext,
request,
requestContext.useMockData
)
call.respond(HttpStatusCode.OK, response)
}

post<BekreftelseRequest>("/bekreftelse") { request ->
with(resolveRequest(request.identitetsnummer)) {
with(authorizationService.authorize(TilgangType.SKRIVE)) {
bekreftelseService.mottaBekreftelse(
request,
useMockData
)

call.respond(HttpStatusCode.OK)
}
}
val requestContext = resolveRequest(request.identitetsnummer)
val securityContext = authorizationService.authorize(requestContext, TilgangType.SKRIVE)
bekreftelseService.mottaBekreftelse(
securityContext,
request,
requestContext.useMockData
)
call.respond(HttpStatusCode.OK)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,9 @@ class AuthorizationService(
private val logger: Logger = LoggerFactory.getLogger("no.nav.paw.logger.auth")
private val auditLogger: Logger = buildAuditLogger

context(RequestContext)
@WithSpan
suspend fun authorize(tilgangType: TilgangType): SecurityContext {
val tokenContext = principal?.context ?: throw BearerTokenManglerException("Sesjon mangler")
suspend fun authorize(requestContext: RequestContext, tilgangType: TilgangType): SecurityContext {
val tokenContext = requestContext.principal?.context ?: throw BearerTokenManglerException("Sesjon mangler")

val accessToken = tokenContext.resolveTokens().firstOrNull()
?: throw UgyldigBearerTokenException("Ingen gyldige Bearer Tokens funnet")
Expand All @@ -48,7 +47,7 @@ class AuthorizationService(
}

val securityContext = SecurityContext(
sluttbruker = resolveSluttbruker(accessToken, identitetsnummer),
sluttbruker = resolveSluttbruker(accessToken, requestContext.identitetsnummer),
innloggetBruker = resolveInnloggetBruker(accessToken),
accessToken = accessToken,
tilgangType = tilgangType
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,39 +45,39 @@ class BekreftelseService(
return checkNotNull(internStateStore) { "Intern state store er ikke initiert" }
}

context(SecurityContext)
@WithSpan
suspend fun finnTilgjengeligBekreftelser(
securityContext: SecurityContext,
request: TilgjengeligeBekreftelserRequest,
useMockData: Boolean
): TilgjengeligBekreftelserResponse {
// TODO Fjern når vi har ferdig Kafka-logikk
if (useMockData) {
return mockDataService.finnTilgjengeligBekreftelser(sluttbruker.identitetsnummer)
return mockDataService.finnTilgjengeligBekreftelser(securityContext.sluttbruker.identitetsnummer)
}

val internState = getInternStateStore().get(sluttbruker.arbeidssoekerId)
val internState = getInternStateStore().get(securityContext.sluttbruker.arbeidssoekerId)

if (internState != null) {
logger.info("Fant ${internState.tilgjendeligeBekreftelser.size} tilgjengelige bekreftelser")
return internState.tilgjendeligeBekreftelser.toResponse()
} else {
return finnTilgjengeligBekreftelserFraAnnenNode(request)
return finnTilgjengeligBekreftelserFraAnnenNode(securityContext, request)
}
}

context(SecurityContext)
@WithSpan
suspend fun mottaBekreftelse(
securityContext: SecurityContext,
request: BekreftelseRequest,
useMockData: Boolean
) {
// TODO Fjern når vi har ferdig Kafka-logikk
if (useMockData) {
return mockDataService.mottaBekreftelse(sluttbruker.identitetsnummer, request.bekreftelseId)
return mockDataService.mottaBekreftelse(securityContext.sluttbruker.identitetsnummer, request.bekreftelseId)
}

val internState = getInternStateStore().get(sluttbruker.arbeidssoekerId)
val internState = getInternStateStore().get(securityContext.sluttbruker.arbeidssoekerId)

if (internState != null) {
val tilgjengeligBekreftelse = internState.tilgjendeligeBekreftelser
Expand All @@ -88,24 +88,24 @@ class BekreftelseService(
periodeId = tilgjengeligBekreftelse.periodeId,
gjelderFra = tilgjengeligBekreftelse.gjelderFra,
gjelderTil = tilgjengeligBekreftelse.gjelderTil,
innloggetBruker
securityContext.innloggetBruker
)
bekreftelseKafkaProducer.produceMessage(sluttbruker.kafkaKey, bekreftelse)
bekreftelseKafkaProducer.produceMessage(securityContext.sluttbruker.kafkaKey, bekreftelse)
} else {
// TODO Rekreftelse ikke funnet. Hva gjør vi?
}
} else {
sendBekreftelseTilAnnenNode(request)
sendBekreftelseTilAnnenNode(securityContext, request)
}
}

context(SecurityContext)
private suspend fun finnTilgjengeligBekreftelserFraAnnenNode(
securityContext: SecurityContext,
request: TilgjengeligeBekreftelserRequest
): TilgjengeligBekreftelserResponse {
val metadata = kafkaStreams.queryMetadataForKey(
applicationConfig.kafkaTopology.internStateStoreName,
sluttbruker.arbeidssoekerId,
securityContext.sluttbruker.arbeidssoekerId,
Serdes.Long().serializer()
)

Expand All @@ -115,19 +115,19 @@ class BekreftelseService(
} else {
return bekreftelseHttpConsumer.finnTilgjengeligBekreftelser(
host = metadata.activeHost().host(),
bearerToken = accessToken.jwt,
bearerToken = securityContext.accessToken.jwt,
request = request
)
}
}

context(SecurityContext)
private suspend fun sendBekreftelseTilAnnenNode(
securityContext: SecurityContext,
request: BekreftelseRequest
) {
val metadata = kafkaStreams.queryMetadataForKey(
applicationConfig.kafkaTopology.internStateStoreName,
sluttbruker.arbeidssoekerId,
securityContext.sluttbruker.arbeidssoekerId,
Serdes.Long().serializer()
)

Expand All @@ -137,7 +137,7 @@ class BekreftelseService(
} else {
bekreftelseHttpConsumer.sendBekreftelse(
host = metadata.activeHost().host(),
bearerToken = accessToken.jwt,
bearerToken = securityContext.accessToken.jwt,
request = request
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,19 +103,16 @@ class ApplicationTestContext {
route("/api/secured") {
authenticate("idporten", "tokenx", "azure") {
get("/") {
with(resolveRequest()) {
with(authorizationService.authorize(TilgangType.LESE)) {
call.respond("WHATEVER")
}
}
authorizationService.authorize(resolveRequest(), TilgangType.LESE)
call.respond("WHATEVER")
}

post<TilgjengeligeBekreftelserRequest>("/") { request ->
with(resolveRequest(request.identitetsnummer)) {
with(authorizationService.authorize(TilgangType.SKRIVE)) {
call.respond("WHATEVER")
}
}
authorizationService.authorize(
requestContext = resolveRequest(request.identitetsnummer),
tilgangType = TilgangType.SKRIVE
)
call.respond("WHATEVER")
}
}
}
Expand Down

0 comments on commit 1652948

Please sign in to comment.