package Ġcom . vaadin . security demo Ċ Ċ import Ġcom . zaxxer . hikari . HikariConfig Ċ import Ġcom . zaxxer . hikari . Hikari DataSource Ċ import Ġeu . vaadin on kotlin . V aad in On Kotlin Ċ import Ġeu . vaadin on kotlin . security . LoggedIn User Resolver Ċ import Ġeu . vaadin on kotlin . security . logged In User Resolver Ċ import Ġeu . vaadin on kotlin . vaadin 1 0 . Session Ċ import Ġeu . vaadin on kotlin . v ok db . dataSource Ċ import Ġorg . fly way db . core . Fly way Ċ import Ġorg . h 2 . Driver Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjavax . servlet . ServletContext Event Ċ import Ġjavax . servlet . ServletContext Listener Ċ import Ġjavax . servlet . annotation . Web Listener Ċ Ċ /** Ċ Ġ* ĠCalled Ġby Ġthe ĠServlet ĠContainer Ġto Ġbootstrap Ġyour Ġapp . ĠWe Ġneed Ġto Ġbootstrap Ġthe ĠV aad in - on - Kotlin Ġframework , Ċ Ġ* Ġin Ġorder Ġto Ġhave Ġsupport Ġfor Ġthe Ġdatabase ; Ġthen Ġwe 'll Ġrun ĠFly way Ġmigration Ġscripts , Ġto Ġmake Ġsure Ġthat Ġthe Ġdatabase Ġis Ġup - to - date . Ċ Ġ* ĠAfter Ġthat 's Ġdone , Ġyour Ġapp Ġis Ġready Ġto Ġbe Ġserving Ġclient Ġbrowsers . Ċ Ġ*/ Ċ @ Web Listener Ċ class ĠBootstrap : ĠServlet Context Listener Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġcontext Initialized ( s ce : ĠServlet Context Event ?) Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . info (" Starting Ġup ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġthis Ġwill Ġconfigure Ġyour Ġdatabase . ĠFor Ġdemo Ġpurposes , Ġan Ġin - memory Ġembedded ĠH 2 Ġdatabase Ġis Ġused . ĠTo Ġuse Ġa Ġproduction - ready Ġdatabase : ĊĠĠĠĠĠĠĠ Ġ// Ġ 1 . Ġfill Ġin Ġthe Ġproper ĠJDBC ĠURL Ġhere ĊĠĠĠĠĠĠĠ Ġ// Ġ 2 . Ġmake Ġsure Ġto Ġinclude Ġthe Ġdatabase Ġdriver Ġinto Ġthe Ġclasspath , Ġby Ġadding Ġa Ġdependency Ġon Ġthe Ġdriver Ġinto Ġthe Ġbuild . gradle Ġfile . ĊĠĠĠĠĠĠĠ Ġval Ġcfg Ġ= ĠH ikariConfig (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdriver ClassName Ġ= ĠDriver :: class . java . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjdbc Url Ġ= Ġ" jdbc : h 2 : mem : test ; DB _ CLOSE _ DELAY =- 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġ" sa " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠV aad in On Kotlin . dataSource Ġ= ĠH ikari DataSource ( cfg ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠInitializes Ġthe ĠVo K Ġframework ĊĠĠĠĠĠĠĠ Ġlog . info (" Initializing ĠV aad in On Kotlin ") ĊĠĠĠĠĠĠĠ ĠV aad in On Kotlin . init () ĊĊĠĠĠĠĠĠĠ Ġ// ĠMakes Ġsure Ġthe Ġdatabase Ġis Ġup - to - date ĊĠĠĠĠĠĠĠ Ġlog . info (" Running ĠDB Ġmigrations ") ĊĠĠĠĠĠĠĠ Ġval Ġfly way : ĠFly way Ġ= ĠFly way . configure () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. dataSource ( V aad in On Kotlin . dataSource ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. load () ĊĠĠĠĠĠĠĠ Ġfly way . migrate () ĊĊĠĠĠĠĠĠĠ Ġ// Ġsetup Ġsecurity ĊĠĠĠĠĠĠĠ ĠV aad in On Kotlin . logged In User Resolver Ġ= Ġobject Ġ: ĠLog ged In User Resolver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġis LoggedIn (): ĠBoolean Ġ= ĠSession . login Manager . is LoggedIn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetCurrent User Roles (): ĠSet < String > Ġ= ĠSession . login Manager . getCurrent User Roles () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠUser ( username Ġ= Ġ" admin ", Ġroles Ġ= Ġ" admin , user "). apply Ġ{ Ġset Password (" admin "); Ġsave () Ġ} ĊĠĠĠĠĠĠĠ ĠUser ( username Ġ= Ġ" user ", Ġroles Ġ= Ġ" user "). apply Ġ{ Ġset Password (" user "); Ġsave () Ġ} ĊĊĠĠĠĠĠĠĠ Ġlog . info (" Initialization Ġcomplete ") ĊĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . error (" Bootstrap Ġfailed !", Ġt ) ĊĠĠĠĠĠĠĠ Ġthrow Ġt ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcontext Destroyed ( s ce : ĠServlet Context Event ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . info (" Shut ting Ġdown ") ĊĠĠĠĠĠĠĠ Ġlog . info (" Destroy ing ĠV aad in On Kotlin ") ĊĠĠĠĠĠĠĠ ĠV aad in On Kotlin . destroy () ĊĠĠĠĠĠĠĠ Ġlog . info (" Shutdown Ġcomplete ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlog Ġ= ĠLoggerFactory . getLogger ( Bootstrap :: class . java ) ĊĠĠĠ Ġ} Ċ } Ċ