/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 ĠN ST DA Ċ Ġ* ĠĠ ĠNational ĠScience Ġand ĠTechnology ĠDevelopment ĠAg ency , ĠTh ail and Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġh ii . thing . api . security . token Ċ Ċ import Ġh ii . thing . api . security . token . jwt . Jwt Thing Principal Ċ import Ġjava . security . Principal Ċ import Ġjavax . ws . rs . core . SecurityContext Ċ Ċ class ĠToken SecurityContext ( ĊĠĠĠ Ġval Ġtoken : ĠString , ĊĠĠĠ Ġval Ġtoken Manager : ĠToken Manager Ċ ) Ġ: ĊĠĠĠ ĠSecurity Context Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġis User In Role ( role : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( token . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrole Ġ== Ġ" visitor " ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Manager . getUser Role ( token ). contains ( role ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Authentication Scheme (): ĠString Ġ= Ġ" Bearer " ĊĊĠĠĠ Ġoverride Ġfun ĠgetUser Principal (): ĠPrincipal Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( token . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPrincipal Ġ{ Ġ" visitor " Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrun Ġ= Ġkotlin . run Catch ing Ġ{ ĠJwt Thing Principal ( token ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( run . is Success ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun . get OrNull () !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPrincipal Ġ{ Ġ" visitor " Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Secure () Ġ= Ġtrue Ċ } Ċ