package Ġsk . v ild ib ald . pol ls . controller . impl Ċ Ċ import Ġorg . springframework . security . access . pre post . Pre Authorize Ċ import Ġorg . springframework . web . bind . annotation .* Ċ import Ġsk . v ild ib ald . pol ls . controller . UserController Ċ import Ġsk . v ild ib ald . pol ls . payload . User Identity Availability Ċ import Ġsk . v ild ib ald . pol ls . payload . UserProfile Ċ import Ġsk . v ild ib ald . pol ls . payload . User Summary Ċ import Ġsk . v ild ib ald . pol ls . security . CurrentUser Ċ import Ġsk . v ild ib ald . pol ls . security . User Principal Ċ import Ġsk . v ild ib ald . pol ls . service . UserService Ċ Ċ @ RestController Ċ @ RequestMapping ("/ api ") Ċ class ĠUser Controller Impl ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠuserService : ĠUserService Ċ ) Ġ: ĠUser Controller Ġ{ ĊĊĠĠĠ Ġ@ GetMapping ("/ user / me ") ĊĠĠĠ Ġ@ Pre Authorize (" has Role (' USER ') ") ĊĠĠĠ Ġoverride Ġfun Ġcurrent UserInfo (@ CurrentUser ĠcurrentUser : ĠUser Principal ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ: ĠUser Summary Ġ= ĠuserService . current UserInfo ( currentUser ) ĊĊĠĠĠ Ġ@ GetMapping ("/ user / check Username Availability ") ĊĠĠĠ Ġoverride Ġfun Ġcheck Username Availability (@ RequestParam ( value Ġ= Ġ" username ") Ġusername : ĠString ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ: ĠUser Identity Availability Ġ= ĠuserService . check Username Availability ( username ) ĊĊĠĠĠ Ġ@ GetMapping ("/ user / check Email Availability ") ĊĠĠĠ Ġoverride Ġfun Ġcheck Email Availability (@ RequestParam ( value Ġ= Ġ" email ") Ġemail : ĠString ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ: ĠUser Identity Availability Ġ= ĠuserService . check Email Availability ( email ) ĊĊĠĠĠ Ġ@ GetMapping ("/ users /{ username }") ĊĠĠĠ Ġoverride Ġfun Ġuser Profile (@ PathVariable ( value Ġ= Ġ" username ") Ġusername : ĠString ): ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUser Profile Ġ= ĠuserService . user Profile ( username ) Ċ }