package Ġcom . ok ta . developer . notes Ċ Ċ import Ġcom . fasterxml . jackson . annotation . JsonIgnore Ċ import Ġorg . springframework . boot . autoconfigure . SpringBoot Application Ċ import Ġorg . springframework . boot . run Application Ċ import Ġorg . springframework . boot . web . servlet . Filter Registration Bean Ċ import Ġorg . springframework . context . annotation . Bean Ċ import Ġorg . springframework . core . Ordered Ċ import Ġorg . springframework . data . domain . Page Ċ import Ġorg . springframework . data . domain . Page able Ċ import Ġorg . springframework . data . jpa . repository . Jpa Repository Ċ import Ġorg . springframework . data . rest . core . annotation . Handle Before Create Ċ import Ġorg . springframework . data . rest . core . annotation . Repository EventHandler Ċ import Ġorg . springframework . data . rest . core . annotation . Repository Rest Resource Ċ import Ġorg . springframework . security . core . context . SecurityContext Holder Ċ import Ġorg . springframework . stereotype . Component Ċ import Ġorg . springframework . web . cors . Cors Configuration Ċ import Ġorg . springframework . web . cors . Url Based Cors Configuration Source Ċ import Ġorg . springframework . web . filter . Cors Filter Ċ import Ġjavax . persistence . Entity Ċ import Ġjavax . persistence . GeneratedValue Ċ import Ġjavax . persistence . Id Ċ Ċ @ SpringBoot Application Ċ class ĠDemo Application Ġ{ ĊĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġfun Ġsimple Cors Filter (): ĠFilter Registration Bean < Cors Filter > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsource Ġ= ĠUrl Based Cors Configuration Source () ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= ĠC ors Configuration () ĊĠĠĠĠĠĠĠ Ġconfig . allow Credentials Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġconfig . allowed Orig ins Ġ= ĠlistOf (" http :// localhost : 4 2 0 0 ") ĊĠĠĠĠĠĠĠ Ġconfig . allowed Methods Ġ= ĠlistOf ("* "); ĊĠĠĠĠĠĠĠ Ġconfig . allowed Headers Ġ= ĠlistOf ("* ") ĊĠĠĠĠĠĠĠ Ġsource . register Cors Configuration (" /** ", Ġconfig ) ĊĠĠĠĠĠĠĠ Ġval Ġbean Ġ= ĠFilter Registration Bean ( Cors Filter ( source )) ĊĠĠĠĠĠĠĠ Ġbean . order Ġ= ĠOrdered . HIG HE ST _ PREC ED ENCE ĊĠĠĠĠĠĠĠ Ġreturn Ġbean ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġrun Application < Demo Application >(* args ) Ċ } Ċ Ċ @ Entity Ċ data Ġclass ĠNote (@ Id Ġ@ GeneratedValue Ġvar Ġid : ĠLong ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtitle : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtext : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ JsonIgnore Ġvar Ġuser : ĠString ? Ġ= Ġnull ) Ċ Ċ @ Repository Rest Resource Ċ interface ĠNotes Repository Ġ: ĠJ pa Repository < Note , ĠLong > Ġ{ ĊĠĠĠ Ġfun ĠfindAll ByUser ( name : ĠString , Ġpage able : ĠPage able ): ĠPage < Note > ĊĠĠĠ Ġfun ĠfindAll ByUser And Title Containing IgnoreCase ( name : ĠString , Ġtitle : ĠString , Ġpage able : ĠPage able ): ĠPage < Note > Ċ } Ċ Ċ @ Component Ċ @ Repository EventHandler ( Note :: class ) Ċ class ĠAdd User To Note Ġ{ ĊĊĠĠĠ Ġ@ Handle Before Create ĊĠĠĠ Ġfun Ġhandle Create ( note : ĠNote ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġusername : ĠString Ġ= ĠSecurity Context Holder . getContext (). get Authentication (). name ĊĠĠĠĠĠĠĠ Ġprintln (" Creating Ġnote : Ġ$ note Ġwith Ġuser : Ġ$ username ") ĊĠĠĠĠĠĠĠ Ġnote . user Ġ= Ġusername ĊĠĠĠ Ġ} Ċ } Ċ