Skip to content

Commit 8645e75

Browse files
author
Kristian Storvoll
authored
Circleci (#20)
Fikser 403-feil i tilgangskontroll og legger tilbake circleci
1 parent 203ecbb commit 8645e75

File tree

4 files changed

+102
-11
lines changed

4 files changed

+102
-11
lines changed

.circleci/config.yml

+82
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
version: 2.1
2+
orbs:
3+
barkendeploy: navikt/barkendeploy@dev:master
4+
slack: circleci/[email protected]
5+
6+
parameters:
7+
deploy_branch:
8+
type: boolean
9+
default: false
10+
11+
jobs:
12+
build_jar:
13+
docker:
14+
- image: "circleci/openjdk:11-jdk"
15+
steps:
16+
- checkout
17+
- setup_remote_docker
18+
- barkendeploy/init
19+
- barkendeploy/gradle-cache-restore
20+
# - run:
21+
# name: Run tests
22+
# command: ./gradlew test
23+
- run:
24+
name: Build jar file
25+
command: ./gradlew shadowJar -x test
26+
- barkendeploy/skip-on-env-var:
27+
env_var: '"<< pipeline.parameters.deploy_branch >>"'
28+
- barkendeploy/gradle-cache-persist
29+
- barkendeploy/docker-build
30+
- barkendeploy/docker-login
31+
- barkendeploy/docker-push
32+
run_tests:
33+
machine:
34+
image: circleci/classic:201808-01
35+
docker_layer_caching: true
36+
steps:
37+
- checkout
38+
- barkendeploy/init
39+
- barkendeploy/gradle-cache-restore
40+
- run:
41+
name: Run tests
42+
command: ./gradlew test
43+
workflows:
44+
version: 2
45+
build_and_deploy:
46+
jobs:
47+
- build_jar:
48+
context: barkendeploy
49+
filters:
50+
branches:
51+
only: master
52+
- barkendeploy/deployment:
53+
deployments:
54+
- barkendeploy/deploy-create:
55+
cluster: dev-fss
56+
- barkendeploy/deploy-create:
57+
cluster: prod-fss
58+
context: barkendeploy
59+
requires:
60+
- build_jar
61+
test_branch:
62+
unless: << pipeline.parameters.deploy_branch >>
63+
jobs:
64+
- run_tests:
65+
filters:
66+
branches:
67+
ignore: master
68+
build_branch:
69+
when: << pipeline.parameters.deploy_branch >>
70+
jobs:
71+
- build_jar:
72+
context: barkendeploy
73+
filters:
74+
branches:
75+
ignore: master
76+
- barkendeploy/deployment:
77+
deployments:
78+
- barkendeploy/deploy-create:
79+
cluster: dev-fss
80+
context: barkendeploy
81+
requires:
82+
- build_jar

src/main/kotlin/no/nav/syfo/personstatus/PersonOversiktStatusApi.kt

+9-7
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@ import no.nav.syfo.auth.isInvalidToken
99
import no.nav.syfo.metric.COUNT_PERSONOVERSIKTSTATUS_ENHET_HENTET
1010
import no.nav.syfo.personstatus.domain.PersonOversiktStatus
1111
import no.nav.syfo.tilgangskontroll.TilgangskontrollConsumer
12-
import no.nav.syfo.util.getCallId
13-
import no.nav.syfo.util.validateEnhet
12+
import no.nav.syfo.util.*
1413
import org.slf4j.Logger
1514
import org.slf4j.LoggerFactory
1615

@@ -23,17 +22,17 @@ fun Route.registerPersonoversiktApi(
2322
route("/api/v1/personoversikt") {
2423
get("/enhet/{enhet}") {
2524
try {
25+
val callId = getCallId()
2626
val token = getTokenFromCookie(call.request.cookies)
2727

2828
val enhet: String = call.parameters["enhet"]?.takeIf { validateEnhet(it) }
2929
?: throw IllegalArgumentException("Enhet mangler")
3030

31-
32-
when (tilgangskontrollConsumer.harVeilederTilgangTilEnhet(enhet, token, getCallId())) {
31+
when (tilgangskontrollConsumer.harVeilederTilgangTilEnhet(enhet, token, callId)) {
3332
true -> {
3433
val personListe: List<PersonOversiktStatus> = personoversiktStatusService
3534
.hentPersonoversiktStatusTilknyttetEnhet(enhet, token)
36-
.filter { tilgangskontrollConsumer.harVeilederTilgangTilPerson(it.fnr, token, getCallId()) }
35+
.filter { tilgangskontrollConsumer.harVeilederTilgangTilPerson(it.fnr, token, callId) }
3736

3837
when {
3938
personListe.isNotEmpty() -> call.respond(personListe)
@@ -42,10 +41,13 @@ fun Route.registerPersonoversiktApi(
4241

4342
COUNT_PERSONOVERSIKTSTATUS_ENHET_HENTET.inc()
4443
}
45-
else -> call.respond(HttpStatusCode.Forbidden)
44+
else -> {
45+
log.error("Veileder mangler tilgang til enhet, {}", CallIdArgument(callId))
46+
call.respond(HttpStatusCode.Forbidden, "Veileder mangler tilgang til enhet")
47+
}
4648
}
4749
} catch (e: IllegalArgumentException) {
48-
log.warn("Kan ikke hente personoversikt for enhet: {}", e.message, getCallId())
50+
log.warn("Kan ikke hente personoversikt for enhet: {}, {}", e.message, CallIdArgument(getCallId()))
4951
call.respond(HttpStatusCode.BadRequest, e.message ?: "Kan ikke hente personoversikt for enhet")
5052
}
5153
}

src/main/kotlin/no/nav/syfo/tilgangskontroll/TilgangskontrollConsumer.kt

+10-4
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,12 @@ import io.ktor.client.HttpClient
44
import io.ktor.client.request.*
55
import io.ktor.client.response.HttpResponse
66
import io.ktor.http.ContentType
7+
import no.nav.syfo.auth.log
78
import no.nav.syfo.util.NAV_CALL_ID_HEADER
9+
import org.slf4j.LoggerFactory
10+
11+
12+
val log = LoggerFactory.getLogger("no.nav.syfo.oversikt.tilgangskontroll")
813

914
class TilgangskontrollConsumer(
1015
private val endpointUrl: String,
@@ -19,8 +24,8 @@ class TilgangskontrollConsumer(
1924
val response = client.get<HttpResponse>(getTilgangskontrollUrl(pathTilgangTilBruker)) {
2025
accept(ContentType.Application.Json)
2126
headers {
22-
"Authorization" to "Bearer $token"
23-
NAV_CALL_ID_HEADER to callId
27+
append("Authorization", "Bearer $token")
28+
append(NAV_CALL_ID_HEADER, callId)
2429
}
2530
parameter(paramFnr, fnr)
2631
}
@@ -31,10 +36,11 @@ class TilgangskontrollConsumer(
3136
val response = client.get<HttpResponse>(getTilgangskontrollUrl(pathTilgangTilEnhet)) {
3237
accept(ContentType.Application.Json)
3338
headers {
34-
"Authorization" to "Bearer $token"
35-
NAV_CALL_ID_HEADER to callId
39+
append("Authorization", "Bearer $token")
40+
append(NAV_CALL_ID_HEADER, callId)
3641
}
3742
parameter(paramEnhet, enhet)
43+
3844
}
3945
return response.status.value in 200..299
4046
}

src/main/kotlin/no/nav/syfo/util/RequestUtil.kt

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package no.nav.syfo.util
22

3+
import com.fasterxml.jackson.core.JsonGenerator
34
import io.ktor.application.ApplicationCall
45
import io.ktor.application.call
56
import io.ktor.util.pipeline.PipelineContext

0 commit comments

Comments
 (0)