@@ -71,15 +71,15 @@ func (m *Manager) MapTokenModel(token oauth2.TokenInfo) {
7171}
7272
7373// MapAuthorizeGenerate 注入授权令牌生成接口
74- func (m * Manager ) MapAuthorizeGenerate (gen oauth2.AuthorizeTokenGenerate ) {
74+ func (m * Manager ) MapAuthorizeGenerate (gen oauth2.AuthorizeGenerate ) {
7575 if gen == nil {
7676 panic (ErrNilValue )
7777 }
7878 m .injector .Map (gen )
7979}
8080
8181// MapTokenGenerate 注入访问令牌生成接口
82- func (m * Manager ) MapTokenGenerate (gen oauth2.TokenGenerate ) {
82+ func (m * Manager ) MapTokenGenerate (gen oauth2.AccessGenerate ) {
8383 if gen == nil {
8484 panic (ErrNilValue )
8585 }
@@ -148,8 +148,8 @@ func (m *Manager) GenerateAuthToken(rt oauth2.ResponseType, tgr *oauth2.TokenGen
148148 err = verr
149149 return
150150 }
151- _ , ierr := m .injector .Invoke (func (ti oauth2.TokenInfo , gen oauth2.AuthorizeTokenGenerate , stor oauth2.TokenStorage ) {
152- td := & oauth2.TokenGenerateBasic {
151+ _ , ierr := m .injector .Invoke (func (ti oauth2.TokenInfo , gen oauth2.AuthorizeGenerate , stor oauth2.TokenStorage ) {
152+ td := & oauth2.GenerateBasic {
153153 Client : cli ,
154154 UserID : tgr .UserID ,
155155 CreateAt : time .Now (),
@@ -163,9 +163,10 @@ func (m *Manager) GenerateAuthToken(rt oauth2.ResponseType, tgr *oauth2.TokenGen
163163 ti .SetUserID (tgr .UserID )
164164 ti .SetRedirectURI (tgr .RedirectURI )
165165 ti .SetScope (tgr .Scope )
166- ti .SetTokenCreateAt (td .CreateAt )
167- ti .SetTokenExpiresIn (m .rtcfg [rt ].TokenExp )
168- ti .SetToken (tv )
166+ ti .SetAuthType (rt .String ())
167+ ti .SetAccess (tv )
168+ ti .SetAccessCreateAt (td .CreateAt )
169+ ti .SetAccessExpiresIn (m .rtcfg [rt ].TokenExp )
169170 err = stor .Create (ti )
170171 if err != nil {
171172 return
@@ -178,35 +179,18 @@ func (m *Manager) GenerateAuthToken(rt oauth2.ResponseType, tgr *oauth2.TokenGen
178179 return
179180}
180181
181- // checkAuthToken 检查授权令牌
182- func (m * Manager ) checkAuthToken (tgr * oauth2.TokenGenerateRequest ) (err error ) {
183- _ , ierr := m .injector .Invoke (func (stor oauth2.TokenStorage ) {
184- ti , terr := stor .TakeByToken (tgr .Code )
182+ // GenerateAccessToken 生成访问令牌、更新令牌
183+ // gt 授权模式
184+ // tgr 生成令牌的参数
185+ func (m * Manager ) GenerateAccessToken (gt oauth2.GrantType , tgr * oauth2.TokenGenerateRequest ) (token , refresh string , err error ) {
186+ if gt == oauth2 .AuthorizationCodeCredentials { // 授权码模式
187+ ti , terr := m .LoadAccessToken (tgr .Code )
185188 if terr != nil {
186189 err = terr
187190 return
188191 } else if ti .GetRedirectURI () != tgr .RedirectURI || ti .GetClientID () != tgr .ClientID {
189192 err = ErrAuthTokenInvalid
190193 return
191- } else if ti .GetTokenCreateAt ().Add (ti .GetTokenExpiresIn ()).Before (time .Now ()) {
192- err = ErrAuthTokenInvalid
193- return
194- }
195- })
196- if ierr != nil && err == nil {
197- err = ierr
198- }
199- return
200- }
201-
202- // GenerateToken 生成令牌
203- // gt 授权模式
204- // tgr 生成令牌的参数
205- func (m * Manager ) GenerateToken (gt oauth2.GrantType , tgr * oauth2.TokenGenerateRequest ) (token , refresh string , err error ) {
206- if gt == oauth2 .AuthorizationCodeCredentials {
207- err = m .checkAuthToken (tgr )
208- if err != nil {
209- return
210194 }
211195 }
212196 cli , err := m .GetClient (tgr .ClientID )
@@ -216,8 +200,8 @@ func (m *Manager) GenerateToken(gt oauth2.GrantType, tgr *oauth2.TokenGenerateRe
216200 err = ErrClientInvalid
217201 return
218202 }
219- _ , ierr := m .injector .Invoke (func (ti oauth2.TokenInfo , gen oauth2.TokenGenerate , stor oauth2.TokenStorage ) {
220- td := & oauth2.TokenGenerateBasic {
203+ _ , ierr := m .injector .Invoke (func (ti oauth2.TokenInfo , gen oauth2.AccessGenerate , stor oauth2.TokenStorage ) {
204+ td := & oauth2.GenerateBasic {
221205 Client : cli ,
222206 UserID : tgr .UserID ,
223207 CreateAt : time .Now (),
@@ -231,9 +215,10 @@ func (m *Manager) GenerateToken(gt oauth2.GrantType, tgr *oauth2.TokenGenerateRe
231215 ti .SetUserID (tgr .UserID )
232216 ti .SetRedirectURI (tgr .RedirectURI )
233217 ti .SetScope (tgr .Scope )
234- ti .SetTokenCreateAt (td .CreateAt )
235- ti .SetTokenExpiresIn (m .gtcfg [gt ].TokenExp )
236- ti .SetToken (tv )
218+ ti .SetAuthType (gt .String ())
219+ ti .SetAccessCreateAt (td .CreateAt )
220+ ti .SetAccessExpiresIn (m .gtcfg [gt ].TokenExp )
221+ ti .SetAccess (tv )
237222 if rv != "" {
238223 ti .SetRefreshCreateAt (td .CreateAt )
239224 ti .SetRefreshExpiresIn (m .gtcfg [gt ].RefreshExp )
@@ -251,19 +236,19 @@ func (m *Manager) GenerateToken(gt oauth2.GrantType, tgr *oauth2.TokenGenerateRe
251236 return
252237}
253238
254- // RefreshToken 更新访问令牌
255- func (m * Manager ) RefreshToken (refresh , scope string ) (token string , err error ) {
256- ti , err := m .CheckRefreshToken (refresh )
239+ // RefreshAccessToken 更新访问令牌
240+ func (m * Manager ) RefreshAccessToken (refresh , scope string ) (token string , err error ) {
241+ ti , err := m .LoadRefreshToken (refresh )
257242 if err != nil {
258243 return
259244 }
260- _ , ierr := m .injector .Invoke (func (stor oauth2.TokenStorage , gen oauth2.TokenGenerate ) {
245+ _ , ierr := m .injector .Invoke (func (stor oauth2.TokenStorage , gen oauth2.AccessGenerate ) {
261246 cli , cerr := m .GetClient (ti .GetClientID ())
262247 if cerr != nil {
263248 err = cerr
264249 return
265250 }
266- td := & oauth2.TokenGenerateBasic {
251+ td := & oauth2.GenerateBasic {
267252 Client : cli ,
268253 UserID : ti .GetUserID (),
269254 CreateAt : time .Now (),
@@ -273,8 +258,9 @@ func (m *Manager) RefreshToken(refresh, scope string) (token string, err error)
273258 err = terr
274259 return
275260 }
276- ti .SetToken (tv )
277- ti .SetTokenCreateAt (td .CreateAt )
261+ ti .SetAuthType (oauth2 .RefreshCredentials .String ())
262+ ti .SetAccess (tv )
263+ ti .SetAccessCreateAt (td .CreateAt )
278264 if scope != "" {
279265 ti .SetScope (scope )
280266 }
@@ -290,48 +276,66 @@ func (m *Manager) RefreshToken(refresh, scope string) (token string, err error)
290276 return
291277}
292278
293- // RevokeToken 废除令牌
294- func (m * Manager ) RevokeToken ( token string ) (err error ) {
295- if token == "" {
296- err = ErrTokenInvalid
279+ // RemoveAccessToken 删除访问令牌
280+ func (m * Manager ) RemoveAccessToken ( access string ) (err error ) {
281+ if access == "" {
282+ err = ErrAccessInvalid
297283 return
298284 }
299285 _ , ierr := m .injector .Invoke (func (stor oauth2.TokenStorage ) {
300- err = stor .DeleteByToken ( token )
286+ err = stor .RemoveByAccess ( access )
301287 })
302288 if ierr != nil && err == nil {
303289 err = ierr
304290 }
305291 return
306292}
307293
308- // CheckToken 令牌检查
309- func (m * Manager ) CheckToken (token string ) (info oauth2.TokenInfo , err error ) {
310- if token == "" {
311- err = ErrTokenInvalid
294+ // RemoveRefreshToken 删除更新令牌
295+ func (m * Manager ) RemoveRefreshToken (refresh string ) (err error ) {
296+ if refresh == "" {
297+ err = ErrAccessInvalid
298+ return
299+ }
300+ _ , ierr := m .injector .Invoke (func (stor oauth2.TokenStorage ) {
301+ err = stor .RemoveByRefresh (refresh )
302+ })
303+ if ierr != nil && err == nil {
304+ err = ierr
305+ }
306+ return
307+ }
308+
309+ // LoadAccessToken 加载访问令牌信息
310+ func (m * Manager ) LoadAccessToken (access string ) (info oauth2.TokenInfo , err error ) {
311+ if access == "" {
312+ err = ErrAccessInvalid
312313 return
313314 }
314315 _ , ierr := m .injector .Invoke (func (stor oauth2.TokenStorage ) {
315316 ct := time .Now ()
316- ti , terr := stor .GetByToken ( token )
317+ ti , terr := stor .GetByAccess ( access )
317318 if terr != nil {
318319 err = terr
319320 return
320321 } else if ti == nil {
321- err = ErrTokenInvalid
322+ err = ErrAccessInvalid
322323 return
323- } else if ti .GetRefresh () != "" && ti .GetRefreshCreateAt ().Add (ti .GetRefreshExpiresIn ()).Before (ct ) { // 检查g令牌是否过期
324- if verr := stor .ExpiredByRefresh (ti .GetRefresh ()); verr != nil {
324+ } else if ti .GetRefresh () != "" && ti .GetRefreshCreateAt ().Add (ti .GetRefreshExpiresIn ()).Before (ct ) { // 检查更新令牌是否过期
325+ // 删除过期的访问令牌
326+ if verr := stor .RemoveByRefresh (ti .GetRefresh ()); verr != nil {
325327 err = verr
326328 return
327329 }
328330 err = ErrRefreshExpired
329- } else if ti .GetTokenCreateAt ().Add (ti .GetTokenExpiresIn ()).Before (ct ) { // 检查令牌是否过期
330- if verr := stor .ExpiredByToken (token ); verr != nil {
331- err = verr
332- return
331+ } else if ti .GetAccessCreateAt ().Add (ti .GetAccessExpiresIn ()).Before (ct ) { // 检查访问令牌是否过期
332+ if ti .GetRefresh () == "" { // 删除过期的访问令牌
333+ if verr := stor .RemoveByAccess (access ); verr != nil {
334+ err = verr
335+ return
336+ }
333337 }
334- err = ErrTokenExpired
338+ err = ErrAccessExpired
335339 return
336340 }
337341 info = ti
@@ -342,8 +346,8 @@ func (m *Manager) CheckToken(token string) (info oauth2.TokenInfo, err error) {
342346 return
343347}
344348
345- // CheckRefreshToken 更新令牌检查
346- func (m * Manager ) CheckRefreshToken (refresh string ) (info oauth2.TokenInfo , err error ) {
349+ // LoadRefreshToken 加载更新令牌信息
350+ func (m * Manager ) LoadRefreshToken (refresh string ) (info oauth2.TokenInfo , err error ) {
347351 if refresh == "" {
348352 err = ErrRefreshInvalid
349353 return
@@ -357,8 +361,8 @@ func (m *Manager) CheckRefreshToken(refresh string) (info oauth2.TokenInfo, err
357361 err = ErrRefreshInvalid
358362 return
359363 } else if ti .GetRefreshCreateAt ().Add (ti .GetRefreshExpiresIn ()).Before (time .Now ()) {
360- // 废除过期的令牌
361- if verr := stor .ExpiredByRefresh (refresh ); verr != nil {
364+ // 删除过期的更新令牌
365+ if verr := stor .RemoveByRefresh (refresh ); verr != nil {
362366 err = verr
363367 return
364368 }
0 commit comments