package Ġapp . l unch time . core . security Ċ Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . security . core . user details . Reactive UserDetails Service Ċ import Ġorg . springframework . security . core . user details . User Ċ import Ġorg . springframework . security . core . user details . UserDetails Ċ import Ġorg . springframework . stereotype . Component Ċ import Ġreactor . core . publisher . Mono Ċ Ċ @ Component Ċ class ĠAuthentication Service Ġ: ĠReactive UserDetails Service Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠNO OP _ PASSWORD _ PREFIX Ġ= Ġ"{ noop }" ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġlateinit Ġvar Ġcredential Repository : ĠCredential Repository ĊĊĠĠĠ Ġoverride Ġfun ĠfindBy Username ( username : ĠString ): ĠMono < UserDetails > Ġ= ĊĠĠĠĠĠĠĠ Ġcredential Repository ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. findBy Email ( username ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map ( this :: to UserDetails ) ĊĊĠĠĠ Ġprivate Ġfun Ġto UserDetails ( credential : ĠCredential ): ĠUser Details Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUser . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. username ( credential . email ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. password ( NO OP _ PASSWORD _ PREFIX Ġ+ Ġcredential . password ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. roles (* credential . author ities . to Typed Array ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () Ċ Ċ }