@@ -47,19 +47,23 @@ func (rs *TokenStore) Create(info oauth2.TokenInfo) (err error) {
4747 return
4848 }
4949 pipe := rs .cli .Pipeline ()
50- basicID := uuid .NewV4 ().String ()
51- aexp := info .GetAccessExpiresIn ()
52- rexp := aexp
53-
54- if refresh := info .GetRefresh (); refresh != "" {
55- rexp = info .GetRefreshCreateAt ().Add (info .GetRefreshExpiresIn ()).Sub (ct )
56- if aexp .Seconds () > rexp .Seconds () {
57- aexp = rexp
50+ if code := info .GetCode (); code != "" {
51+ pipe .Set (code , jv , info .GetCodeExpiresIn ())
52+ } else {
53+ basicID := uuid .NewV4 ().String ()
54+ aexp := info .GetAccessExpiresIn ()
55+ rexp := aexp
56+
57+ if refresh := info .GetRefresh (); refresh != "" {
58+ rexp = info .GetRefreshCreateAt ().Add (info .GetRefreshExpiresIn ()).Sub (ct )
59+ if aexp .Seconds () > rexp .Seconds () {
60+ aexp = rexp
61+ }
62+ pipe .Set (refresh , basicID , rexp )
5863 }
59- pipe .Set (refresh , basicID , rexp )
64+ pipe .Set (info .GetAccess (), basicID , aexp )
65+ pipe .Set (basicID , jv , rexp )
6066 }
61- pipe .Set (info .GetAccess (), basicID , aexp )
62- pipe .Set (basicID , jv , rexp )
6367
6468 if _ , verr := pipe .Exec (); verr != nil {
6569 err = verr
@@ -76,6 +80,12 @@ func (rs *TokenStore) remove(key string) (err error) {
7680 return
7781}
7882
83+ // RemoveByCode Use the authorization code to delete the token information
84+ func (rs * TokenStore ) RemoveByCode (code string ) (err error ) {
85+ err = rs .remove (code )
86+ return
87+ }
88+
7989// RemoveByAccess Use the access token to delete the token information
8090func (rs * TokenStore ) RemoveByAccess (access string ) (err error ) {
8191 err = rs .remove (access )
@@ -88,17 +98,8 @@ func (rs *TokenStore) RemoveByRefresh(refresh string) (err error) {
8898 return
8999}
90100
91- // get
92- func (rs * TokenStore ) get (token string ) (ti oauth2.TokenInfo , err error ) {
93- tv , verr := rs .cli .Get (token ).Result ()
94- if verr != nil {
95- if verr == redis .Nil {
96- return
97- }
98- err = verr
99- return
100- }
101- result := rs .cli .Get (tv )
101+ func (rs * TokenStore ) getData (key string ) (ti oauth2.TokenInfo , err error ) {
102+ result := rs .cli .Get (key )
102103 if verr := result .Err (); verr != nil {
103104 if verr == redis .Nil {
104105 return
@@ -119,14 +120,41 @@ func (rs *TokenStore) get(token string) (ti oauth2.TokenInfo, err error) {
119120 return
120121}
121122
123+ func (rs * TokenStore ) getBasicID (token string ) (basicID string , err error ) {
124+ tv , verr := rs .cli .Get (token ).Result ()
125+ if verr != nil {
126+ if verr == redis .Nil {
127+ return
128+ }
129+ err = verr
130+ return
131+ }
132+ basicID = tv
133+ return
134+ }
135+
136+ // GetByCode Use the authorization code for token information data
137+ func (rs * TokenStore ) GetByCode (code string ) (ti oauth2.TokenInfo , err error ) {
138+ ti , err = rs .getData (code )
139+ return
140+ }
141+
122142// GetByAccess Use the access token for token information data
123143func (rs * TokenStore ) GetByAccess (access string ) (ti oauth2.TokenInfo , err error ) {
124- ti , err = rs .get (access )
144+ basicID , err := rs .getBasicID (access )
145+ if err != nil || basicID == "" {
146+ return
147+ }
148+ ti , err = rs .getData (basicID )
125149 return
126150}
127151
128152// GetByRefresh Use the refresh token for token information data
129153func (rs * TokenStore ) GetByRefresh (refresh string ) (ti oauth2.TokenInfo , err error ) {
130- ti , err = rs .get (refresh )
154+ basicID , err := rs .getBasicID (refresh )
155+ if err != nil || basicID == "" {
156+ return
157+ }
158+ ti , err = rs .getData (basicID )
131159 return
132160}
0 commit comments