package Ġch . keep cal m . security . f ak eto ken Ċ Ċ import Ġio . json web token . Jw ts Ċ import Ġio . json web token . Signature Algorithm Ċ import Ġorg . springframework . web . bind . annotation . GetMapping Ċ import Ġorg . springframework . web . bind . annotation . RestController Ċ import Ġjava . nio . charset . StandardCharsets Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . time . Zone Id Ċ import Ġjava . util .* Ċ Ċ @ RestController Ċ class ĠFake Token Controller () Ġ{ ĊĠĠĠ Ġ@ GetMapping ( value Ġ= Ġ["/ f ak eto ken "]) ĊĠĠĠ Ġfun Ġf ak eto ken () Ġ= Ġgenerate Token ( Token ()) Ċ } Ċ fun Ġgenerate Token ( token : ĠToken ) Ġ= ĊĠĠĠ ĠJ w ts . builder () ĊĠĠĠĠĠĠĠ Ġ. setId ( UUID . randomUUID (). toString ()) ĊĠĠĠĠĠĠĠ Ġ. set Subject ( token . subject ) ĊĠĠĠĠĠĠĠ Ġ. set Iss ued At ( Date ()) ĊĠĠĠĠĠĠĠ Ġ. set Expiration ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDate . from ( token . expiration . to Long (). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocalDateTime . now (). plus Seconds ( it ). at Zone ( Zone Id . system Default ()). to Instant () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. set Issuer ( token . issuer ) ĊĠĠĠĠĠĠĠ Ġ. set Audience ( token . audience ) ĊĠĠĠĠĠĠĠ Ġ. add Claims ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" language ", Ġtoken . language ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" name ", Ġtoken . name ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" firstName ", Ġtoken . firstName ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" email ", Ġtoken . user Email ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" roles ", Ġtoken . roles ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. sign With ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSignature Algorithm . HS 2 5 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBase 6 4 . get Encoder (). encode ToString ( token . secret . toByteArray ( StandardCharsets . UTF _ 8 )) ĊĠĠĠĠĠĠĠ Ġ). compact () ĊĊ Ċ data Ġclass ĠToken ( ĊĠĠĠ Ġvar Ġlanguage : ĠString ? Ġ= Ġ" de ", ĊĠĠĠ Ġvar ĠfirstName : ĠString ? Ġ= Ġ" John ", ĊĠĠĠ Ġvar Ġname : ĠString ? Ġ= Ġ" Do e ", ĊĠĠĠ Ġvar Ġsubject : ĠString ? Ġ= Ġ" john . doe @ ch . keep cal m . foo . ch . keep cal m . bar . ch ", ĊĠĠĠ Ġvar Ġroles : ĠString ? Ġ= Ġ" keep cal m . user ", ĊĠĠĠ Ġvar Ġissuer : ĠString ? Ġ= Ġ" Keep cal m ĠAuth ", ĊĠĠĠ Ġvar Ġaudience : ĠString ? Ġ= Ġ" Keep cal m ", ĊĠĠĠ Ġvar Ġsecret : ĠString Ġ= Ġ" s 3 cret P @ ss w 0 rd ", ĊĠĠĠ Ġvar Ġuser Email : ĠString ? Ġ= Ġ" jo h . doe @ ch . keep cal m . foo . ch . keep cal m . bar . ch ", ĊĠĠĠ Ġvar Ġexpiration : ĠInt Ġ= Ġ 3 6 0 0 0 0 0 Ċ ) Ċ