package Ġcom . ad ik osa . tod olist k . storage . services Ċ Ċ import Ġcom . ad ik osa . tod olist k . domain . model . Register Data Ċ import Ġcom . ad ik osa . tod olist k . domain . services . UserService Ċ import Ġcom . ad ik osa . tod olist k . storage . Role Repository Ċ import Ġcom . ad ik osa . tod olist k . storage . UserRepository Ċ import Ġcom . ad ik osa . tod olist k . storage . entities . User Entity Ċ import Ġjava . lang . RuntimeException Ċ import Ġjava . util .* Ċ import Ġorg . springframework . stereotype . Service Ċ Ċ @ Service (" userService ") Ċ class ĠUser ServiceImpl ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġuser Repository : ĠUser Repository , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġrole Repository : ĠRole Repository Ċ ) Ġ: ĠUserService Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġregister ( register Data : ĠRegister Data ): ĠUUID Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsaved User Ġ= Ġwith ( register Data ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠUser Entity ( firstName , ĠlastName , Ġusername , Ġemail , Ġpassword , Ġis Enabled Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Role Ġ= Ġrole Repository . find ByName (" ROLE _ USER ") ?: Ġthrow ĠRuntimeException () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser . roles Ġ= Ġuser . roles . plus ( user Role ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Repository . save ( user ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsaved User . id !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġactivate ( userId : ĠUUID ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġfind ById ( userId ). apply Ġ{ Ġis Enabled Ġ= Ġtrue Ġ} ĊĠĠĠĠĠĠĠ Ġuser Repository . save ( user ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave User Token ( userId : ĠUUID , Ġtoken : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġfind ById ( userId ). apply Ġ{ Ġthis . token Ġ= Ġtoken Ġ} ĊĠĠĠĠĠĠĠ Ġuser Repository . save ( user ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġremove User Token ( userId : ĠUUID ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġfind ById ( userId ). apply Ġ{ Ġthis . token Ġ= Ġnull Ġ} ĊĠĠĠĠĠĠĠ Ġuser Repository . save ( user ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfind ById ( userId : ĠUUID ): ĠUser Entity Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġuser Repository . findById ( userId ). orElse Throw Ġ{ ĠRuntimeException () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhas User Token ( username : ĠString , Ġtoken : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġuser Repository . exists By Username And Token ( username , Ġtoken ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Email Taken ( email : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġuser Repository . exists By Email ( email ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfind Id By Username ( username : ĠString ): ĠUUID Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġuser Repository . findBy Username ( username ) ?: Ġthrow ĠRuntimeException () ĊĠĠĠĠĠĠĠ Ġreturn Ġuser . id !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfind Id By Email ( email : ĠString ): ĠUUID Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġuser Repository . findBy Email ( email ) ?: Ġthrow ĠRuntimeException () ĊĠĠĠĠĠĠĠ Ġreturn Ġuser . id !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Username Taken ( username : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġuser Repository . exists By Username ( username ) ĊĠĠĠ Ġ} Ċ } Ċ