package Ġcom . p aw mot . spring 5 . samples . users Ċ Ċ import Ġorg . springframework . dao . Duplicate Key Exception Ċ import Ġorg . springframework . http . HttpStatus Ċ import Ġorg . springframework . security . crypto . password . Password Encoder Ċ import Ġorg . springframework . stereotype . Service Ċ import Ġorg . springframework . web . reactive . function . server . Server Request Ċ import Ġorg . springframework . web . reactive . function . server . Server Response Ċ import Ġorg . springframework . web . reactive . function . server . Server Response . bad Request Ċ import Ġorg . springframework . web . reactive . function . server . Server Response . status Ċ import Ġreactor . core . publisher . Mono Ċ Ċ @ Service Ċ class ĠUsers Handler ( private Ġval Ġusers Repository : ĠUsers Repository , Ġprivate Ġval Ġpassword Encoder : ĠPassword Encoder ) Ġ{ ĊĊĠĠĠ Ġfun Ġregister ( req : ĠServer Request ): ĠMono < Server Response > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġreq . body To Mono ( Register Dto :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠUser . from ( it , Ġpassword Encoder ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġusers Repository . insert ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġstatus ( HttpStatus . CREATED ). build () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. onError Resume ( Duplicate Key Exception :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbad Request (). sync Body (" User Ġwith Ġsuch Ġlogin Ġalready Ġexists !") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }