package Ġeu . j rie . put . pi per . pi per home service . domain . user Ċ Ċ import Ġorg . springframework . data . annotation . Id Ċ import Ġorg . springframework . data . mongodb . core . mapping . Document Ċ import Ġorg . springframework . data . mongodb . repository . Reactive Mongo Repository Ċ import Ġorg . springframework . security . core . Authentication Ċ import Ġorg . springframework . security . core . authority . Simple Granted Authority Ċ import Ġorg . springframework . security . core . user details . UserDetails Ċ import Ġreactor . core . publisher . Mono Ċ Ċ @ Document Ċ data Ġclass ĠUser Ġ( ĊĠĠĠĠĠĠĠ Ġ@ Id ĊĠĠĠĠĠĠĠ Ġval Ġid : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġlogin : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġsecret : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġhouse : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġroles : ĠSet < String > Ċ ) Ġ: ĠUser Details Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Password () Ġ= Ġsecret ĊĠĠĠ Ġoverride Ġfun Ġget Username () Ġ= Ġlogin ĊĠĠĠ Ġoverride Ġfun Ġis Account Non Expired () Ġ= Ġtrue ĊĠĠĠ Ġoverride Ġfun Ġis Account Non Locked () Ġ= Ġtrue ĊĠĠĠ Ġoverride Ġfun Ġis Credentials Non Expired () Ġ= Ġtrue ĊĠĠĠ Ġoverride Ġfun Ġis Enabled () Ġ= Ġtrue ĊĠĠĠ Ġoverride Ġfun Ġget Author ities () Ġ= Ġroles . map Ġ{ Ġ" ROLE _$ it "} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠSimple Granted Authority ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toSet () Ċ } Ċ Ċ interface ĠUser Repository Ġ: ĠReactive Mongo Repository < User , ĠString > Ġ{ ĊĠĠĠ Ġfun ĠfindBy Login ( login : ĠString ): ĠMono < User > Ċ } Ċ Ċ fun ĠAuthentication . as User () Ġ= Ġthis . principal Ġas ĠUser Ċ