package Ġit . val er io va udi . v auth enticator . oauth 2 . authorization service Ċ Ċ import Ġit . val er io va udi . v auth enticator . extent ions . to Sha 2 5 6 Ċ import Ġorg . slf 4 j . Logger Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . data . redis . core . Redis Template Ċ import Ġorg . springframework . lang . Nullable Ċ import Ġorg . springframework . security . oauth 2 . core . OAuth 2 AccessToken Ċ import Ġorg . springframework . security . oauth 2 . core . OAuth 2 Authorization Code Ċ import Ġorg . springframework . security . oauth 2 . core . OAuth 2 RefreshToken Ċ import Ġorg . springframework . security . oauth 2 . core . OAuth 2 TokenType Ċ import Ġorg . springframework . security . oauth 2 . core . endpoint . OAuth 2 Parameter Names Ċ import Ġorg . springframework . security . oauth 2 . server . authorization . OAuth 2 Authorization Ċ import Ġorg . springframework . security . oauth 2 . server . authorization . OAuth 2 Authorization Service Ċ import Ġorg . springframework . util . Assert Ċ Ċ class ĠRedis OAuth 2 Authorization Service ( private Ġval Ġredis Template : ĠRedis Template < Any , ĠAny >) Ġ: ĊĠĠĠ ĠOAuth 2 Authorization Service Ġ{ ĊĊĠĠĠ Ġval Ġlogger : ĠLogger Ġ= ĠLoggerFactory . getLogger ( Redis OAuth 2 Authorization Service :: class . java ) ĊĊĠĠĠ Ġoverride Ġfun Ġsave ( authorization : ĠOAuth 2 Authorization ) Ġ{ ĊĠĠĠĠĠĠĠ ĠAssert . notNull ( authorization , Ġ" authorization Ġcannot Ġbe Ġnull ") ĊĠĠĠĠĠĠĠ Ġlogger . debug (" save ") ĊĊĠĠĠĠĠĠĠ Ġredis Template . ops For Hash < String , ĠOAuth 2 Authorization >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. put ( authorization . id , Ġauthorization . id . to Sha 2 5 6 (), Ġauthorization ) ĊĊĠĠĠĠĠĠĠ Ġval ĠfindBy Token For Ġ= ĠfindBy Token For ( authorization ) ĊĠĠĠĠĠĠĠ ĠfindBy Token For . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġredis Template . ops For Hash < String , ĠString >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put ( it , Ġit . to Sha 2 5 6 (), Ġauthorization . id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġremove ( authorization : ĠOAuth 2 Authorization ) Ġ{ ĊĠĠĠĠĠĠĠ ĠAssert . notNull ( authorization , Ġ" authorization Ġcannot Ġbe Ġnull ") ĊĠĠĠĠĠĠĠ Ġlogger . debug (" remove ") ĊĠĠĠĠĠĠĠ Ġredis Template . ops For Hash < String , ĠOAuth 2 Authorization >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. delete ( authorization . id , Ġauthorization . id . to Sha 2 5 6 (), Ġauthorization ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Nullable ĊĠĠĠ Ġoverride Ġfun Ġfind ById ( id : ĠString ): ĠOAuth 2 Authorization ? Ġ{ ĊĠĠĠĠĠĠĠ ĠAssert . has Text ( id , Ġ" id Ġcannot Ġbe Ġempty ") ĊĠĠĠĠĠĠĠ Ġlogger . debug (" findById : Ġ$ id ") ĊĠĠĠĠĠĠĠ Ġreturn Ġredis Template . ops For Hash < String , ĠOAuth 2 Authorization >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ( id , Ġid . to Sha 2 5 6 ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Nullable ĊĠĠĠ Ġoverride Ġfun ĠfindBy Token ( token : ĠString , Ġ@ Nullable Ġtoken Type : ĠOAuth 2 TokenType ?): ĠOAuth 2 Authorization ? Ġ{ ĊĠĠĠĠĠĠĠ ĠAssert . has Text ( token , Ġ" token Ġcannot Ġbe Ġempty ") ĊĠĠĠĠĠĠĠ Ġlogger . debug (" findBy Token ") ĊĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġredis Template . ops For Hash < String , ĠString >(). get ( token , Ġtoken . to Sha 2 5 6 ()) !! ĊĠĠĠĠĠĠĠ Ġreturn Ġredis Template . ops For Hash < String , ĠOAuth 2 Authorization >(). get ( id , Ġid . to Sha 2 5 6 ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠfindBy Token For ( ĊĠĠĠĠĠĠĠ Ġauthorization : ĠOAuth 2 Authorization , ĊĠĠĠ Ġ): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= Ġauthorization . getAttribute ( OAuth 2 Parameter Names . STATE ) Ġas ĠString ? ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( state Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( state ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOAuth 2 Authorization Code :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOAuth 2 AccessToken :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOAuth 2 RefreshToken :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). map NotNull Ġ{ Ġauthorization . getToken ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . token . token Value Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }