package Ġorg . ver ib lock . min ers . pop . api . auth Ċ Ċ import Ġcom . pap sign . ktor . open ap igen . API Exception Ċ import Ġcom . pap sign . ktor . open ap igen . model . security . API Key Location Ċ import Ġcom . pap sign . ktor . open ap igen . model . security . Http Security Scheme Ċ import Ġcom . pap sign . ktor . open ap igen . model . security . Security Scheme Model Ċ import Ġcom . pap sign . ktor . open ap igen . model . security . Security Scheme Type Ċ import Ġcom . pap sign . ktor . open ap igen . modules . providers . Auth Provider Ċ import Ġcom . pap sign . ktor . open ap igen . route . path . auth . Open API Authenticated Route Ċ import Ġcom . pap sign . ktor . open ap igen . route . path . normal . Normal Open API Route Ċ import Ġcom . pap sign . ktor . open ap igen . route . throws Ċ import Ġio . ktor . application . Application Call Ċ import Ġio . ktor . auth . UserId Principal Ċ import Ġio . ktor . auth . authenticate Ċ import Ġio . ktor . auth . authentication Ċ import Ġio . ktor . http . HttpStatusCode Ċ import Ġio . ktor . util . pipeline . Pipeline Context Ċ import Ġorg . ver ib lock . min ers . pop . api . controller . Bad Principal Exception Ċ Ċ inline Ġfun < T > ĠNormal Open API Route . basic Auth ( ĊĠĠĠ Ġauth Provider : ĠAuth Provider < T >, ĊĠĠĠ Ġcross inline Ġroute : ĠOpenAPI Authenticated Route < T >. ()-> Unit Ġ= Ġ{} Ċ ): ĠOpenAPI Authenticated Route < T > Ġ{ ĊĠĠĠ Ġreturn Ġauth Provider . apply ( this ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġroute () ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠBasic Provider ( ĊĠĠĠ Ġval Ġauth Name : ĠString , ĊĠĠĠ Ġval Ġoptional : ĠBoolean Ċ ) Ġ: ĠAuth Provider < UserId Principal > Ġ{ ĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget Auth ( pipeline : ĠPipeline Context < Unit , ĠApplication Call >): ĠUserId Principal Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpipeline . context . authentication . principal () Ġ?: Ġthrow ĠRuntimeException (" No ĠBasic Auth Principal ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġapply ( route : ĠNormal Open API Route ): ĠOpenAPI Authenticated Route < UserId Principal > Ġ= ĊĠĠĠĠĠĠĠ ĠOpenAPI Authenticated Route ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroute . ktor Route . authenticate ( auth Name , Ġoptional Ġ= Ġoptional ) Ġ{}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroute . provider . child (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠĠĠĠĠ Ġ). throws ( API Exception . api Exception < Bad Principal Exception >( HttpStatusCode . Unauthorized )) ĊĊĠĠĠ Ġoverride Ġval Ġsecurity : ĠIterable < Iterable < Auth Provider . Security <* >>> Ġ= ĊĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAuth Provider . Security ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSecurity Scheme Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSecurity Scheme Type . http , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauth Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAPI Key Location . header , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Security Scheme . basic , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty List < Scopes >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ċ } Ċ