@@ -47,19 +47,23 @@ func (rs *TokenStore) Create(info oauth2.TokenInfo) (err error) {
47
47
return
48
48
}
49
49
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 )
58
63
}
59
- pipe .Set (refresh , basicID , rexp )
64
+ pipe .Set (info .GetAccess (), basicID , aexp )
65
+ pipe .Set (basicID , jv , rexp )
60
66
}
61
- pipe .Set (info .GetAccess (), basicID , aexp )
62
- pipe .Set (basicID , jv , rexp )
63
67
64
68
if _ , verr := pipe .Exec (); verr != nil {
65
69
err = verr
@@ -76,6 +80,12 @@ func (rs *TokenStore) remove(key string) (err error) {
76
80
return
77
81
}
78
82
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
+
79
89
// RemoveByAccess Use the access token to delete the token information
80
90
func (rs * TokenStore ) RemoveByAccess (access string ) (err error ) {
81
91
err = rs .remove (access )
@@ -88,17 +98,8 @@ func (rs *TokenStore) RemoveByRefresh(refresh string) (err error) {
88
98
return
89
99
}
90
100
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 )
102
103
if verr := result .Err (); verr != nil {
103
104
if verr == redis .Nil {
104
105
return
@@ -119,14 +120,41 @@ func (rs *TokenStore) get(token string) (ti oauth2.TokenInfo, err error) {
119
120
return
120
121
}
121
122
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
+
122
142
// GetByAccess Use the access token for token information data
123
143
func (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 )
125
149
return
126
150
}
127
151
128
152
// GetByRefresh Use the refresh token for token information data
129
153
func (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 )
131
159
return
132
160
}
0 commit comments