Skip to content

Commit 3f93d91

Browse files
authored
Merge pull request #20 from LyricTian/develop
To optimize the implementation details
2 parents becfcf0 + ec29a8d commit 3f93d91

File tree

13 files changed

+181
-169
lines changed

13 files changed

+181
-169
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,5 @@ _testmain.go
2626
# OSX
2727
*.DS_Store
2828
*.db
29+
/example/client/client
30+
/example/server/server

errors/error.go

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,12 @@ package errors
22

33
import "errors"
44

5+
// known errors
56
var (
6-
// ErrNilValue Nil Value
7-
ErrNilValue = errors.New("nil value")
8-
9-
// ErrInvalidRedirectURI invalid redirect uri
10-
ErrInvalidRedirectURI = errors.New("invalid redirect uri")
11-
12-
// ErrInvalidAuthorizeCode invalid authorize code
7+
ErrInvalidRedirectURI = errors.New("invalid redirect uri")
138
ErrInvalidAuthorizeCode = errors.New("invalid authorize code")
14-
15-
// ErrInvalidAccessToken invalid access token
16-
ErrInvalidAccessToken = errors.New("invalid access token")
17-
18-
// ErrInvalidRefreshToken invalid refresh token
19-
ErrInvalidRefreshToken = errors.New("invalid refresh token")
20-
21-
// ErrExpiredAccessToken expired access token
22-
ErrExpiredAccessToken = errors.New("expired access token")
23-
24-
// ErrExpiredRefreshToken expired refresh token
25-
ErrExpiredRefreshToken = errors.New("expired refresh token")
9+
ErrInvalidAccessToken = errors.New("invalid access token")
10+
ErrInvalidRefreshToken = errors.New("invalid refresh token")
11+
ErrExpiredAccessToken = errors.New("expired access token")
12+
ErrExpiredRefreshToken = errors.New("expired refresh token")
2613
)

errors/response.go

Lines changed: 10 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -10,36 +10,18 @@ type Response struct {
1010
StatusCode int `json:"-"`
1111
}
1212

13+
// https://tools.ietf.org/html/rfc6749#section-5.2
1314
var (
14-
// ErrInvalidRequest invalid request
15-
ErrInvalidRequest = errors.New("invalid_request")
16-
17-
// ErrUnauthorizedClient unauthorized client
18-
ErrUnauthorizedClient = errors.New("unauthorized_client")
19-
20-
// ErrAccessDenied access denied
21-
ErrAccessDenied = errors.New("access_denied")
22-
23-
// ErrUnsupportedResponseType unsupported response type
15+
ErrInvalidRequest = errors.New("invalid_request")
16+
ErrUnauthorizedClient = errors.New("unauthorized_client")
17+
ErrAccessDenied = errors.New("access_denied")
2418
ErrUnsupportedResponseType = errors.New("unsupported_response_type")
25-
26-
// ErrInvalidScope invalid scope
27-
ErrInvalidScope = errors.New("invalid_scope")
28-
29-
// ErrServerError server error
30-
ErrServerError = errors.New("server_error")
31-
32-
// ErrTemporarilyUnavailable temporarily unavailable
33-
ErrTemporarilyUnavailable = errors.New("temporarily_unavailable")
34-
35-
// ErrInvalidClient invalid client
36-
ErrInvalidClient = errors.New("invalid_client")
37-
38-
// ErrInvalidGrant invalid grant
39-
ErrInvalidGrant = errors.New("invalid_grant")
40-
41-
// ErrUnsupportedGrantType unsupported grant type
42-
ErrUnsupportedGrantType = errors.New("unsupported_grant_type")
19+
ErrInvalidScope = errors.New("invalid_scope")
20+
ErrServerError = errors.New("server_error")
21+
ErrTemporarilyUnavailable = errors.New("temporarily_unavailable")
22+
ErrInvalidClient = errors.New("invalid_client")
23+
ErrInvalidGrant = errors.New("invalid_grant")
24+
ErrUnsupportedGrantType = errors.New("unsupported_grant_type")
4325
)
4426

4527
// Descriptions error description

example/README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,17 @@ Run Server
66

77
``` bash
88
$ cd example/server
9-
$ go run main.go
9+
$ go build server.go
10+
$ ./server
1011
```
1112

1213
Run Client
1314
----------
1415

1516
```
1617
$ cd example/client
17-
$ go run main.go
18+
$ go build client.go
19+
$ ./client
1820
```
1921

2022
Open the browser
File renamed without changes.
File renamed without changes.

manage.go

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,27 +18,30 @@ type TokenGenerateRequest struct {
1818

1919
// Manager Authorization management interface
2020
type Manager interface {
21-
// GetClient Get the client information
21+
// Check the interface implementation
22+
CheckInterface() (err error)
23+
24+
// Get the client information
2225
GetClient(clientID string) (cli ClientInfo, err error)
2326

24-
// GenerateAuthToken Generate the authorization token(code)
27+
// Generate the authorization token(code)
2528
GenerateAuthToken(rt ResponseType, tgr *TokenGenerateRequest) (authToken TokenInfo, err error)
2629

27-
// GenerateAccessToken Generate the access token
30+
// Generate the access token
2831
GenerateAccessToken(rt GrantType, tgr *TokenGenerateRequest) (accessToken TokenInfo, err error)
2932

30-
// RefreshAccessToken Refreshing an access token
33+
// Refreshing an access token
3134
RefreshAccessToken(tgr *TokenGenerateRequest) (accessToken TokenInfo, err error)
3235

33-
// RemoveAccessToken Use the access token to delete the token information
36+
// Use the access token to delete the token information
3437
RemoveAccessToken(access string) (err error)
3538

36-
// RemoveRefreshToken Use the refresh token to delete the token information
39+
// Use the refresh token to delete the token information
3740
RemoveRefreshToken(refresh string) (err error)
3841

39-
// LoadAccessToken According to the access token for corresponding token information
42+
// According to the access token for corresponding token information
4043
LoadAccessToken(access string) (ti TokenInfo, err error)
4144

42-
// LoadRefreshToken According to the refresh token for corresponding token information
45+
// According to the refresh token for corresponding token information
4346
LoadRefreshToken(refresh string) (ti TokenInfo, err error)
4447
}

manage/config.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package manage
2+
3+
import "time"
4+
5+
// Config authorization configuration parameters
6+
type Config struct {
7+
// access token expiration time (in seconds)
8+
AccessTokenExp time.Duration
9+
// refresh token expiration time(in seconds)
10+
RefreshTokenExp time.Duration
11+
// whether to generate the refreshing token
12+
IsGenerateRefresh bool
13+
}
14+
15+
// default configs
16+
var (
17+
DefaultCodeExp = time.Minute * 10
18+
DefaultAuthorizeCodeTokenCfg = &Config{AccessTokenExp: time.Hour * 2, RefreshTokenExp: time.Hour * 24 * 3, IsGenerateRefresh: true}
19+
DefaultImplicitTokenCfg = &Config{AccessTokenExp: time.Hour * 1}
20+
DefaultPasswordTokenCfg = &Config{AccessTokenExp: time.Hour * 2, RefreshTokenExp: time.Hour * 24 * 7, IsGenerateRefresh: true}
21+
DefaultClientTokenCfg = &Config{AccessTokenExp: time.Hour * 2}
22+
DefaultRefreshTokenCfg = &Config{}
23+
)

manage/manage_test.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ func TestManager(t *testing.T) {
1414
Convey("Manager test", t, func() {
1515
manager := manage.NewDefaultManager()
1616
manager.MapClientStorage(store.NewTestClientStore())
17+
manager.MustTokenStorage(store.NewMemoryTokenStore())
18+
19+
Convey("CheckInterface test", func() {
20+
err := manager.CheckInterface()
21+
So(err, ShouldBeNil)
22+
})
1723

1824
Convey("GetClient test", func() {
1925
cli, err := manager.GetClient("1")
@@ -22,7 +28,6 @@ func TestManager(t *testing.T) {
2228
})
2329

2430
Convey("Token test", func() {
25-
manager.MustTokenStorage(store.NewMemoryTokenStore())
2631
testManager(manager)
2732
})
2833
})

0 commit comments

Comments
 (0)