package Ġcn . har 0 1 d . notebook . core . config Ċ Ċ import Ġcn . har 0 1 d . notebook . core . Const Ċ import Ġcn . har 0 1 d . notebook . service . Config Service Ċ import Ġcn . har 0 1 d . notebook . service . Encrypt Service Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġorg . springframework . core . Method Parameter Ċ import Ġorg . springframework . http . MediaType Ċ import Ġorg . springframework . http . converter . Http Message Converter Ċ import Ġorg . springframework . http . server . Server HttpRequest Ċ import Ġorg . springframework . http . server . Server HttpResponse Ċ import Ġorg . springframework . web . bind . annotation . Controller Ad vice Ċ import Ġorg . springframework . web . servlet . mvc . method . annotation . ResponseBody Ad vice Ċ Ċ @ Controller Ad vice Ċ class ĠEncrypt ResponseBody Ad vice ( ĊĠĠĠ Ġprivate Ġval ĠobjectMapper : ĠObjectMapper , ĊĠĠĠ Ġprivate Ġval Ġconfig Service : ĠConfig Service , ĊĠĠĠ Ġprivate Ġval Ġencrypt Service : ĠEncrypt Service , Ċ ) Ġ: ĠResponse Body Ad vice < Any ?> Ġ{ ĊĠĠĠ Ġprivate Ġval Ġspecial Paths Ġ= ĠarrayOf ("/ accounts / info ", Ġ"/ config / site ", Ġ"/ config / menus ") ĊĊĠĠĠ Ġoverride Ġfun Ġsupports ( returnType : ĠMethod Parameter , Ġconverter Type : ĠClass < out ĠHttp Message Converter <* >> ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbefore Body Write ( ĊĠĠĠĠĠĠĠ Ġbody : ĠAny ?, ĊĠĠĠĠĠĠĠ ĠreturnType : ĠMethod Parameter , ĊĠĠĠĠĠĠĠ Ġselected ContentType : ĠMediaType , ĊĠĠĠĠĠĠĠ Ġselected Converter Type : ĠClass < out ĠHttp Message Converter <* >>, ĊĠĠĠĠĠĠĠ Ġrequest : ĠServer HttpRequest , ĊĠĠĠĠĠĠĠ Ġresponse : ĠServer HttpResponse ĊĠĠĠ Ġ): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġenable Encrypt Ġ= Ġconfig Service . get ( Const . ENABLE _ ENCRYPT , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġif Ġ( body Ġ!= Ġnull Ġ&& Ġenable Encrypt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġspecial Ġ= Ġspecial Paths . contains ( request . uri . path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsign Ġ= Ġrequest . headers . getFirst (" sign ") Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Ġ= Ġrequest . headers . getFirst (" time ") Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġencrypted Data Ġ= Ġencrypt Service . encrypt ( object Mapper . writeValue As Bytes ( body ), Ġsign , Ġtime , Ġspecial ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . headers [" sign "] Ġ= Ġencrypt Service . sign ( encrypted Data , ĠConst . DE VELO PER ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . headers [" X - Content - Type "] Ġ= Ġselected ContentType . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . headers [" content - type "] Ġ= ĠMediaType . TEXT _ PLAIN _ VALUE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġencrypted Data ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġbody ĊĠĠĠ Ġ} Ċ } Ċ