From 819320474cf17b476e791db09b6d45129406d1c8 Mon Sep 17 00:00:00 2001 From: lyric Date: Wed, 16 Nov 2016 10:24:28 +0800 Subject: [PATCH] support to reset refreshing time --- .gitignore | 1 + README.md | 4 ++-- manage/config.go | 2 ++ manage/manager.go | 9 +++++++++ 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 715c0f4..562f0b9 100644 --- a/.gitignore +++ b/.gitignore @@ -26,5 +26,6 @@ _testmain.go # OSX *.DS_Store *.db +*.swp /example/client/client /example/server/server diff --git a/README.md b/README.md index ee8e211..0e913ff 100644 --- a/README.md +++ b/README.md @@ -132,8 +132,8 @@ Copyright (c) 2016 Lyric [License-Image]: https://img.shields.io/npm/l/express.svg [Build-Status-Url]: https://travis-ci.org/go-oauth2/oauth2 [Build-Status-Image]: https://travis-ci.org/go-oauth2/oauth2.svg?branch=master -[Release-Url]: https://github.com/go-oauth2/oauth2/releases/tag/v3.5.2 -[Release-image]: http://img.shields.io/badge/release-v3.5.2-1eb0fc.svg +[Release-Url]: https://github.com/go-oauth2/oauth2/releases/tag/v3.5.3 +[Release-image]: http://img.shields.io/badge/release-v3.5.3-1eb0fc.svg [ReportCard-Url]: https://goreportcard.com/report/gopkg.in/oauth2.v3 [ReportCard-Image]: https://goreportcard.com/badge/gopkg.in/oauth2.v3 [GoDoc-Url]: https://godoc.org/gopkg.in/oauth2.v3 diff --git a/manage/config.go b/manage/config.go index 1a3dbfc..ae1886b 100644 --- a/manage/config.go +++ b/manage/config.go @@ -10,6 +10,8 @@ type Config struct { RefreshTokenExp time.Duration // whether to generate the refreshing token IsGenerateRefresh bool + // whether to reset the refreshing expiration time + IsResetRefreshTime bool } // default configs diff --git a/manage/manager.go b/manage/manager.go index 5fda1c7..40e8da1 100644 --- a/manage/manager.go +++ b/manage/manager.go @@ -341,6 +341,7 @@ func (m *Manager) RefreshAccessToken(tgr *oauth2.TokenGenerateRequest) (accessTo err = errors.ErrInvalidClient return } + ti, err := m.LoadRefreshToken(tgr.Refresh) if err != nil { return @@ -348,6 +349,7 @@ func (m *Manager) RefreshAccessToken(tgr *oauth2.TokenGenerateRequest) (accessTo err = errors.ErrInvalidRefreshToken return } + oldAccess, oldRefresh := ti.GetAccess(), ti.GetRefresh() _, ierr := m.injector.Invoke(func(stor oauth2.TokenStore, gen oauth2.AccessGenerate) { td := &oauth2.GenerateBasic{ @@ -355,14 +357,20 @@ func (m *Manager) RefreshAccessToken(tgr *oauth2.TokenGenerateRequest) (accessTo UserID: ti.GetUserID(), CreateAt: time.Now(), } + rcfg := m.grantConfig(oauth2.Refreshing) + tv, rv, terr := gen.Token(td, rcfg.IsGenerateRefresh) if terr != nil { err = terr return } + ti.SetAccess(tv) ti.SetAccessCreateAt(td.CreateAt) + if rcfg.IsResetRefreshTime { + ti.SetRefreshCreateAt(td.CreateAt) + } if scope := tgr.Scope; scope != "" { ti.SetScope(scope) } @@ -373,6 +381,7 @@ func (m *Manager) RefreshAccessToken(tgr *oauth2.TokenGenerateRequest) (accessTo err = verr return } + // remove the old access token if verr := stor.RemoveByAccess(oldAccess); verr != nil { err = verr