package Ġno . nav . oms org sp enger . api Ċ Ċ import Ġcom . fasterxml . jackson . databind . exc . Mis matched Input Exception Ċ import Ġcom . fasterxml . jackson . module . kotlin . Missing Kotlin Parameter Exception Ċ import Ġio . ktor . application .* Ċ import Ġio . ktor . http . HttpHeaders Ċ import Ġio . ktor . http . HttpStatusCode Ċ import Ġio . ktor . request .* Ċ import Ġio . ktor . response . respond Ċ import Ġio . ktor . routing . Route Ċ import Ġio . ktor . routing . post Ċ import Ġno . nav . oms org sp enger . grup pe . Grup pe til gang Service Ċ import Ġno . nav . oms org sp enger . auth . Token Resolver Ċ import Ġno . nav . oms org sp enger . person . Person Til gang Service Ċ import Ġno . nav . oms org sp enger . secure Log Ċ import Ġorg . slf 4 j . LoggerFactory Ċ Ċ private Ġval Ġlogger Ġ= ĠLoggerFactory . getLogger (" no . nav . oms org sp enger . api . Til gang Api ") Ċ Ċ internal Ġfun ĠRoute . Til gang Api ( ĊĠĠĠ Ġtoken Resolver : ĠToken Resolver , ĊĠĠĠ Ġperson Til gang Service : ĠPerson Til gang Service , ĊĠĠĠ Ġgrup pe til gang Service : ĠGr uppe til gang Service ) Ġ{ ĊĊĠĠĠ Ġpost ("/ api / til gang { ... }") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ(_, Ġtoken ) Ġ= Ġtoken Resolver . resolve ( call ) Ġ?: Ġreturn @ post Ġcall . respond ( HttpStatusCode . Unauthorized ) ĊĠĠĠĠĠĠĠ Ġval Ġcorrelation Id Ġ= Ġcall . request . headers [ HttpHeaders . X Correlation Id ] Ġ?: Ġreturn @ post Ġcall . respond ( HttpStatusCode . BadRequest ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! token . er Person Token ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . warn (" Til gang s sty ring Ġble Ġk alt Ġf ra Ġet Ġsystem Ġog Ġik ke Ġen Ġperson br uk er . ĠIss uer : Ġ${ token . jwt . issuer }, ĠClient Id : Ġ${ token . clientId }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ post Ġcall . respond ( HttpStatusCode . Forbidden ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġ( ident it ets nummer , Ġoper as jon , Ġbes k riv else ) Ġ= Ġkotlin . run Catch ing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . receive < Til gang Request >() ĊĠĠĠĠĠĠĠ Ġ}. fold ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess Ġ= Ġ{ Ġrequest Body Ġ-> Ġrequest Body Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Failure Ġ= Ġ{ Ġex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( ex ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMis matched Input Exception , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMissing Kotlin Parameter Exception Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" Mapping Ġexception ", Ġex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ post Ġcall . respond ( HttpStatusCode . BadRequest , Ġex . localized Message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow Ġex ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsecure Log Message Ġ= Ġif Ġ( ident it ets nummer . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Person en Ġ${ token . username } ĠÃ ¸ n sk er ĠÃ¥ Ġ$ bes k riv else Ġ($ oper as jon ) Ġfor Ġident it ets nummer Ġ$ ident it ets nummer " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Person en Ġ${ token . username } ĠÃ ¸ n sk er ĠÃ¥ Ġ$ bes k riv else Ġ($ oper as jon )" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! grup pe til gang Service . kan Gj Ã¸ re Oper as jon ( oper as jon Ġ= Ġoper as jon , Ġtoken Ġ= Ġtoken , Ġcorrelation Id Ġ= Ġcorrelation Id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsecure Log (" Av sl Ã¥ tt : Ġ$ secure Log Message ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ post Ġcall . respond ( HttpStatusCode . Forbidden ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( ident it ets nummer . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" In gen Ġident it ets nummer ĠÃ¥ Ġg j Ã¸ re Ġtil gan ss je kk ĠpÃ¥ .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsecure Log (" In nv il get : Ġ$ secure Log Message ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ post Ġcall . respond ( HttpStatusCode . No Content ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( person Til gang Service . s je kk Til gang ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġident it ets nummer Ġ= Ġident it ets nummer , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcorrelation Id Ġ= Ġcorrelation Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Ġ= Ġtoken )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsecure Log (" In nv il get : Ġ$ secure Log Message ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( HttpStatusCode . No Content ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsecure Log (" Av sl Ã¥ tt : Ġ$ secure Log Message ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( HttpStatusCode . Forbidden ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ