Skip to content

Commit 74d7ad6

Browse files
committed
Fixed naming convention
1 parent 031d2cc commit 74d7ad6

File tree

9 files changed

+175
-150
lines changed

9 files changed

+175
-150
lines changed

const.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ const (
3030
PasswordCredentials
3131
// ClientCredentials 客户端模式
3232
ClientCredentials
33+
// RefreshCredentials 更新令牌模式
34+
RefreshCredentials
3335
)
3436

3537
func (gt GrantType) String() string {
@@ -40,6 +42,8 @@ func (gt GrantType) String() string {
4042
return "password"
4143
case 1 << 3:
4244
return "clientcredentials"
45+
case 1 << 4:
46+
return "refreshtoken"
4347
}
4448
return "unknown"
4549
}

generate.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,22 @@ package oauth2
33
import "time"
44

55
type (
6-
// TokenGenerateBasic 提供生成令牌的基础数据
7-
TokenGenerateBasic struct {
6+
// GenerateBasic 提供生成令牌的基础数据
7+
GenerateBasic struct {
88
Client ClientInfo // 客户端信息
99
UserID string // 用户标识
1010
CreateAt time.Time // 创建时间
1111
}
1212

13-
// AuthorizeTokenGenerate 授权令牌生成接口
14-
AuthorizeTokenGenerate interface {
13+
// AuthorizeGenerate 授权令牌生成接口
14+
AuthorizeGenerate interface {
1515
// 授权令牌
16-
Token(data *TokenGenerateBasic) (token string, err error)
16+
Token(data *GenerateBasic) (code string, err error)
1717
}
1818

19-
// TokenGenerate 令牌生成接口
20-
TokenGenerate interface {
21-
// 生成令牌
22-
Token(data *TokenGenerateBasic, isGenRefresh bool) (token string, refresh string, err error)
19+
// AccessGenerate 访问令牌生成接口
20+
AccessGenerate interface {
21+
// 访问令牌、更新令牌
22+
Token(data *GenerateBasic, isGenRefresh bool) (access, refresh string, err error)
2323
}
2424
)

manage.go

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,23 +18,29 @@ type Manager interface {
1818
// tgr 生成令牌的请求参数
1919
GenerateAuthToken(rt ResponseType, tgr *TokenGenerateRequest) (token string, err error)
2020

21-
// GenerateToken 生成访问令牌、更新令牌
21+
// GenerateAccessToken 生成访问令牌、更新令牌
2222
// rt 授权模式
2323
// tgr 生成令牌的请求参数
24-
GenerateToken(rt GrantType, tgr *TokenGenerateRequest) (token, refresh string, err error)
24+
GenerateAccessToken(rt GrantType, tgr *TokenGenerateRequest) (access, refresh string, err error)
2525

26-
// RefreshToken 使用更新令牌更新访问令牌
26+
// RefreshAccessToken 更新访问令牌
2727
// refresh 更新令牌
2828
// scope 作用域
29-
RefreshToken(refresh, scope string) (token string, err error)
29+
RefreshAccessToken(refresh, scope string) (access string, err error)
3030

31-
// RevokeToken 使用访问令牌废除令牌信息
32-
// token 访问令牌
33-
RevokeToken(token string) (err error)
31+
// RemoveAccessToken 删除访问令牌
32+
// access 访问令牌
33+
RemoveAccessToken(access string) (err error)
3434

35-
// CheckToken 令牌检查,如果存在则返回令牌信息
36-
CheckToken(token string) (ti TokenInfo, err error)
35+
// RemoveRefreshToken 删除更新令牌
36+
// refresh 更新令牌
37+
RemoveRefreshToken(refresh string) (err error)
38+
39+
// LoadAccessToken 加载访问令牌信息
40+
// access 访问令牌
41+
LoadAccessToken(access string) (ti TokenInfo, err error)
3742

38-
// CheckRefreshToken 更新令牌检查,如果存在则返回令牌信息
39-
CheckRefreshToken(refresh string) (ti TokenInfo, err error)
43+
// LoadRefreshToken 加载更新令牌信息
44+
// refresh 更新令牌
45+
LoadRefreshToken(refresh string) (ti TokenInfo, err error)
4046
}

manage/error.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,15 @@ var (
1515
// ErrAuthTokenInvalid Authorize token invalid
1616
ErrAuthTokenInvalid = errors.New("authorize token invalid")
1717

18+
// ErrAccessInvalid Access token expired
19+
ErrAccessInvalid = errors.New("access token invalid")
20+
21+
// ErrAccessExpired Access token expired
22+
ErrAccessExpired = errors.New("access token expired")
23+
1824
// ErrRefreshInvalid Refresh token invalid
1925
ErrRefreshInvalid = errors.New("refresh token invalid")
2026

2127
// ErrRefreshExpired Refresh token expired
2228
ErrRefreshExpired = errors.New("refresh token expired")
23-
24-
// ErrTokenInvalid Token invalid
25-
ErrTokenInvalid = errors.New("token invalid")
26-
27-
// ErrTokenExpired Token expired
28-
ErrTokenExpired = errors.New("token expired")
2929
)

manage/manager.go

Lines changed: 68 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)