package Ġcn . bd q fork . kotlin . web . route Ċ Ċ import Ġcn . bd q fork . context . aware . BeanFactory Aware Ċ import Ġcn . bd q fork . context . aware . Resource Reader Aware Ċ import Ġcn . bd q fork . context . configuration . reader . Resource Reader Ċ import Ġcn . bd q fork . core . exception . Beans Exception Ċ import Ġcn . bd q fork . core . exception . NoSuch Bean Exception Ċ import Ġcn . bd q fork . core . factory . BeanFactory Ċ import Ġcn . bd q fork . core . util . StringUtils Ċ import Ġcn . bd q fork . kotlin . web . constant . Server Property Ċ import Ġio . vertx . core . Vert x Ċ import Ġio . vertx . ext . auth . Auth Provider Ċ import Ġio . vertx . ext . web . Router Ċ import Ġio . vertx . ext . web . handler . Session Handler Ċ import Ġio . vertx . ext . web . s store . Local Session Store Ċ import Ġio . vertx . ext . web . s store . Session Store Ċ import Ġorg . slf 4 j . LoggerFactory Ċ Ċ /** Ċ Ġ* Ġ@ author Ġb dq Ċ Ġ* Ġ@ since Ġ 2 0 2 0 / 2 / 1 0 Ċ Ġ*/ Ċ class ĠSession Manager ( private Ġval Ġrouter : ĠRouter , Ġprivate Ġval Ġvert x : ĠVert x ) Ġ: ĠBean Factory Aware , ĠResource Reader Aware Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbean Factory : ĠBean Factory ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġresource Reader : ĠResource Reader ĊĠĠĠ Ġ@ Throws ( Beans Exception :: class ) ĊĠĠĠ Ġfun Ġregister Session Handler () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsession Store Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbean Factory . getBean ( Session Store :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNoSuch Bean Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLocal Session Store . create ( vertx ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġsession Handler Ġ= ĠSession Handler . create ( session Store ) ĊĠĠĠĠĠĠĠ Ġresolve AndSet Session Properties ( session Handler ) ĊĊĠĠĠĠĠĠĠ Ġval Ġauth Provider Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbean Factory . getBean ( Auth Provider :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠBe ans Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( log . isDebugEnabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . debug (" no Ġauth Ġprovider ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( auth Provider Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession Handler . set Auth Provider ( auth Provider ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrouter . route (). handler ( session Handler ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġresolve AndSet Session Properties ( session Handler : ĠSession Handler ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcookie Http Only Ġ= Ġresource Reader . read Property ( Server Property . SERVER _ COOKIE _ HTTP _ ONLY , ĠBoolean :: class . java ) ĊĠĠĠĠĠĠĠ Ġif Ġ( cookie Http Only Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession Handler . set Cookie Http Only Flag ( cookie Http Only ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcookie Secure Ġ= Ġresource Reader . read Property ( Server Property . SERVER _ COOKIE _ SECURE , ĠBoolean :: class . java ) ĊĠĠĠĠĠĠĠ Ġif Ġ( cookie Secure Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession Handler . set Cookie Secure Flag ( cookie Secure ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġsession Timeout Ġ= Ġresource Reader . read Property ( Server Property . SERVER _ SESSION _ TIMEOUT , ĠLong :: class . java ) ĊĠĠĠĠĠĠĠ Ġif Ġ( session Timeout Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession Handler . set Session Timeout ( session Timeout ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġsession Cookie Name Ġ= Ġresource Reader . read Property ( Server Property . SERVER _ SESSION _ COOKIE _ NAME , ĠString :: class . java ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! StringUtils . isEmpty ( session Cookie Name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession Handler . set Session Cookie Name ( session Cookie Name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġsession Cookie Path Ġ= Ġresource Reader . read Property ( Server Property . SERVER _ SESSION _ COOKIE _ PATH , ĠString :: class . java ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! StringUtils . isEmpty ( session Cookie Path )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession Handler . set Session Cookie Path ( session Cookie Path ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Beans Exception :: class ) ĊĠĠĠ Ġoverride Ġfun Ġset BeanFactory ( bean Factory : ĠBean Factory ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . bean Factory Ġ= Ġbean Factory ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Beans Exception :: class ) ĊĠĠĠ Ġoverride Ġfun Ġset Resource Reader ( resource Reader : ĠResource Reader ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . resource Reader Ġ= Ġresource Reader ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlog Ġ= ĠLoggerFactory . getLogger ( Session Manager :: class . java ) ĊĠĠĠ Ġ} Ċ Ċ }