Skip to content

Commit 6f942a4

Browse files
committed
Remove naked returns
1 parent 051606e commit 6f942a4

File tree

12 files changed

+1557
-1668
lines changed

12 files changed

+1557
-1668
lines changed

generates/access.go

100644100755
+37-36
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,37 @@
1-
package generates
2-
3-
import (
4-
"bytes"
5-
"encoding/base64"
6-
"strconv"
7-
"strings"
8-
9-
"gopkg.in/oauth2.v3"
10-
"gopkg.in/oauth2.v3/utils/uuid"
11-
)
12-
13-
// NewAccessGenerate create to generate the access token instance
14-
func NewAccessGenerate() *AccessGenerate {
15-
return &AccessGenerate{}
16-
}
17-
18-
// AccessGenerate generate the access token
19-
type AccessGenerate struct {
20-
}
21-
22-
// Token based on the UUID generated token
23-
func (ag *AccessGenerate) Token(data *oauth2.GenerateBasic, isGenRefresh bool) (access, refresh string, err error) {
24-
buf := bytes.NewBufferString(data.Client.GetID())
25-
buf.WriteString(data.UserID)
26-
buf.WriteString(strconv.FormatInt(data.CreateAt.UnixNano(), 10))
27-
28-
access = base64.URLEncoding.EncodeToString(uuid.NewMD5(uuid.Must(uuid.NewRandom()), buf.Bytes()).Bytes())
29-
access = strings.ToUpper(strings.TrimRight(access, "="))
30-
if isGenRefresh {
31-
refresh = base64.URLEncoding.EncodeToString(uuid.NewSHA1(uuid.Must(uuid.NewRandom()), buf.Bytes()).Bytes())
32-
refresh = strings.ToUpper(strings.TrimRight(refresh, "="))
33-
}
34-
35-
return
36-
}
1+
package generates
2+
3+
import (
4+
"bytes"
5+
"encoding/base64"
6+
"strconv"
7+
"strings"
8+
9+
"gopkg.in/oauth2.v3"
10+
"gopkg.in/oauth2.v3/utils/uuid"
11+
)
12+
13+
// NewAccessGenerate create to generate the access token instance
14+
func NewAccessGenerate() *AccessGenerate {
15+
return &AccessGenerate{}
16+
}
17+
18+
// AccessGenerate generate the access token
19+
type AccessGenerate struct {
20+
}
21+
22+
// Token based on the UUID generated token
23+
func (ag *AccessGenerate) Token(data *oauth2.GenerateBasic, isGenRefresh bool) (string, string, error) {
24+
buf := bytes.NewBufferString(data.Client.GetID())
25+
buf.WriteString(data.UserID)
26+
buf.WriteString(strconv.FormatInt(data.CreateAt.UnixNano(), 10))
27+
28+
access := base64.URLEncoding.EncodeToString(uuid.NewMD5(uuid.Must(uuid.NewRandom()), buf.Bytes()).Bytes())
29+
access = strings.ToUpper(strings.TrimRight(access, "="))
30+
refresh := ""
31+
if isGenRefresh {
32+
refresh = base64.URLEncoding.EncodeToString(uuid.NewSHA1(uuid.Must(uuid.NewRandom()), buf.Bytes()).Bytes())
33+
refresh = strings.ToUpper(strings.TrimRight(refresh, "="))
34+
}
35+
36+
return access, refresh, nil
37+
}

generates/authorize.go

100644100755
+29-29
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
1-
package generates
2-
3-
import (
4-
"bytes"
5-
"encoding/base64"
6-
"strings"
7-
8-
"gopkg.in/oauth2.v3"
9-
"gopkg.in/oauth2.v3/utils/uuid"
10-
)
11-
12-
// NewAuthorizeGenerate create to generate the authorize code instance
13-
func NewAuthorizeGenerate() *AuthorizeGenerate {
14-
return &AuthorizeGenerate{}
15-
}
16-
17-
// AuthorizeGenerate generate the authorize code
18-
type AuthorizeGenerate struct{}
19-
20-
// Token based on the UUID generated token
21-
func (ag *AuthorizeGenerate) Token(data *oauth2.GenerateBasic) (code string, err error) {
22-
buf := bytes.NewBufferString(data.Client.GetID())
23-
buf.WriteString(data.UserID)
24-
token := uuid.NewMD5(uuid.Must(uuid.NewRandom()), buf.Bytes())
25-
code = base64.URLEncoding.EncodeToString(token.Bytes())
26-
code = strings.ToUpper(strings.TrimRight(code, "="))
27-
28-
return
29-
}
1+
package generates
2+
3+
import (
4+
"bytes"
5+
"encoding/base64"
6+
"strings"
7+
8+
"gopkg.in/oauth2.v3"
9+
"gopkg.in/oauth2.v3/utils/uuid"
10+
)
11+
12+
// NewAuthorizeGenerate create to generate the authorize code instance
13+
func NewAuthorizeGenerate() *AuthorizeGenerate {
14+
return &AuthorizeGenerate{}
15+
}
16+
17+
// AuthorizeGenerate generate the authorize code
18+
type AuthorizeGenerate struct{}
19+
20+
// Token based on the UUID generated token
21+
func (ag *AuthorizeGenerate) Token(data *oauth2.GenerateBasic) (string, error) {
22+
buf := bytes.NewBufferString(data.Client.GetID())
23+
buf.WriteString(data.UserID)
24+
token := uuid.NewMD5(uuid.Must(uuid.NewRandom()), buf.Bytes())
25+
code := base64.URLEncoding.EncodeToString(token.Bytes())
26+
code = strings.ToUpper(strings.TrimRight(code, "="))
27+
28+
return code, nil
29+
}

generates/jwt_access.go

100644100755
+99-95
Original file line numberDiff line numberDiff line change
@@ -1,95 +1,99 @@
1-
package generates
2-
3-
import (
4-
"encoding/base64"
5-
"strings"
6-
"time"
7-
8-
errs "errors"
9-
10-
"github.com/dgrijalva/jwt-go"
11-
"gopkg.in/oauth2.v3"
12-
"gopkg.in/oauth2.v3/errors"
13-
"gopkg.in/oauth2.v3/utils/uuid"
14-
)
15-
16-
// JWTAccessClaims jwt claims
17-
type JWTAccessClaims struct {
18-
jwt.StandardClaims
19-
}
20-
21-
// Valid claims verification
22-
func (a *JWTAccessClaims) Valid() error {
23-
if time.Unix(a.ExpiresAt, 0).Before(time.Now()) {
24-
return errors.ErrInvalidAccessToken
25-
}
26-
return nil
27-
}
28-
29-
// NewJWTAccessGenerate create to generate the jwt access token instance
30-
func NewJWTAccessGenerate(key []byte, method jwt.SigningMethod) *JWTAccessGenerate {
31-
return &JWTAccessGenerate{
32-
SignedKey: key,
33-
SignedMethod: method,
34-
}
35-
}
36-
37-
// JWTAccessGenerate generate the jwt access token
38-
type JWTAccessGenerate struct {
39-
SignedKey []byte
40-
SignedMethod jwt.SigningMethod
41-
}
42-
43-
// Token based on the UUID generated token
44-
func (a *JWTAccessGenerate) Token(data *oauth2.GenerateBasic, isGenRefresh bool) (access, refresh string, err error) {
45-
claims := &JWTAccessClaims{
46-
StandardClaims: jwt.StandardClaims{
47-
Audience: data.Client.GetID(),
48-
Subject: data.UserID,
49-
ExpiresAt: data.TokenInfo.GetAccessCreateAt().Add(data.TokenInfo.GetAccessExpiresIn()).Unix(),
50-
},
51-
}
52-
53-
token := jwt.NewWithClaims(a.SignedMethod, claims)
54-
var key interface{}
55-
if a.isEs() {
56-
key, err = jwt.ParseECPrivateKeyFromPEM(a.SignedKey)
57-
if err != nil {
58-
return "", "", err
59-
}
60-
} else if a.isRsOrPS() {
61-
key, err = jwt.ParseRSAPrivateKeyFromPEM(a.SignedKey)
62-
if err != nil {
63-
return "", "", err
64-
}
65-
} else if a.isHs() {
66-
key = a.SignedKey
67-
} else {
68-
return "", "", errs.New("unsupported sign method")
69-
}
70-
access, err = token.SignedString(key)
71-
if err != nil {
72-
return
73-
}
74-
75-
if isGenRefresh {
76-
refresh = base64.URLEncoding.EncodeToString(uuid.NewSHA1(uuid.Must(uuid.NewRandom()), []byte(access)).Bytes())
77-
refresh = strings.ToUpper(strings.TrimRight(refresh, "="))
78-
}
79-
80-
return
81-
}
82-
83-
func (a *JWTAccessGenerate) isEs() bool {
84-
return strings.HasPrefix(a.SignedMethod.Alg(), "ES")
85-
}
86-
87-
func (a *JWTAccessGenerate) isRsOrPS() bool {
88-
isRs := strings.HasPrefix(a.SignedMethod.Alg(), "RS")
89-
isPs := strings.HasPrefix(a.SignedMethod.Alg(), "PS")
90-
return isRs || isPs
91-
}
92-
93-
func (a *JWTAccessGenerate) isHs() bool {
94-
return strings.HasPrefix(a.SignedMethod.Alg(), "HS")
95-
}
1+
package generates
2+
3+
import (
4+
"encoding/base64"
5+
"strings"
6+
"time"
7+
8+
errs "errors"
9+
10+
"github.com/dgrijalva/jwt-go"
11+
"gopkg.in/oauth2.v3"
12+
"gopkg.in/oauth2.v3/errors"
13+
"gopkg.in/oauth2.v3/utils/uuid"
14+
)
15+
16+
// JWTAccessClaims jwt claims
17+
type JWTAccessClaims struct {
18+
jwt.StandardClaims
19+
}
20+
21+
// Valid claims verification
22+
func (a *JWTAccessClaims) Valid() error {
23+
if time.Unix(a.ExpiresAt, 0).Before(time.Now()) {
24+
return errors.ErrInvalidAccessToken
25+
}
26+
return nil
27+
}
28+
29+
// NewJWTAccessGenerate create to generate the jwt access token instance
30+
func NewJWTAccessGenerate(key []byte, method jwt.SigningMethod) *JWTAccessGenerate {
31+
return &JWTAccessGenerate{
32+
SignedKey: key,
33+
SignedMethod: method,
34+
}
35+
}
36+
37+
// JWTAccessGenerate generate the jwt access token
38+
type JWTAccessGenerate struct {
39+
SignedKey []byte
40+
SignedMethod jwt.SigningMethod
41+
}
42+
43+
// Token based on the UUID generated token
44+
func (a *JWTAccessGenerate) Token(data *oauth2.GenerateBasic, isGenRefresh bool) (string, string, error) {
45+
claims := &JWTAccessClaims{
46+
StandardClaims: jwt.StandardClaims{
47+
Audience: data.Client.GetID(),
48+
Subject: data.UserID,
49+
ExpiresAt: data.TokenInfo.GetAccessCreateAt().Add(data.TokenInfo.GetAccessExpiresIn()).Unix(),
50+
},
51+
}
52+
53+
token := jwt.NewWithClaims(a.SignedMethod, claims)
54+
var key interface{}
55+
if a.isEs() {
56+
v, err := jwt.ParseECPrivateKeyFromPEM(a.SignedKey)
57+
if err != nil {
58+
return "", "", err
59+
}
60+
key = v
61+
} else if a.isRsOrPS() {
62+
v, err := jwt.ParseRSAPrivateKeyFromPEM(a.SignedKey)
63+
if err != nil {
64+
return "", "", err
65+
}
66+
key = v
67+
} else if a.isHs() {
68+
key = a.SignedKey
69+
} else {
70+
return "", "", errs.New("unsupported sign method")
71+
}
72+
73+
access, err := token.SignedString(key)
74+
if err != nil {
75+
return "", "", err
76+
}
77+
refresh := ""
78+
79+
if isGenRefresh {
80+
refresh = base64.URLEncoding.EncodeToString(uuid.NewSHA1(uuid.Must(uuid.NewRandom()), []byte(access)).Bytes())
81+
refresh = strings.ToUpper(strings.TrimRight(refresh, "="))
82+
}
83+
84+
return access, refresh, nil
85+
}
86+
87+
func (a *JWTAccessGenerate) isEs() bool {
88+
return strings.HasPrefix(a.SignedMethod.Alg(), "ES")
89+
}
90+
91+
func (a *JWTAccessGenerate) isRsOrPS() bool {
92+
isRs := strings.HasPrefix(a.SignedMethod.Alg(), "RS")
93+
isPs := strings.HasPrefix(a.SignedMethod.Alg(), "PS")
94+
return isRs || isPs
95+
}
96+
97+
func (a *JWTAccessGenerate) isHs() bool {
98+
return strings.HasPrefix(a.SignedMethod.Alg(), "HS")
99+
}

go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ require (
1818
github.com/onsi/ginkgo v1.10.2 // indirect
1919
github.com/onsi/gomega v1.7.0 // indirect
2020
github.com/sergi/go-diff v1.0.0 // indirect
21-
github.com/smartystreets/goconvey v0.0.0-20190731233626-505e41936337
21+
github.com/smartystreets/goconvey v1.6.4
2222
github.com/stretchr/testify v1.4.0 // indirect
2323
github.com/tidwall/btree v0.0.0-20170113224114-9876f1454cf0 // indirect
2424
github.com/tidwall/buntdb v1.1.0

go.sum

+3-2
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ=
5252
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
5353
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM=
5454
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
55-
github.com/smartystreets/goconvey v0.0.0-20190731233626-505e41936337 h1:WN9BUFbdyOsSH/XohnWpXOlq9NBD5sGAB2FciQMUEe8=
56-
github.com/smartystreets/goconvey v0.0.0-20190731233626-505e41936337/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
55+
github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
56+
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
5757
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
5858
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
5959
github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
@@ -113,6 +113,7 @@ golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223 h1:DH4skfRX4EBpamg7iV4ZlCpbl
113113
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
114114
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
115115
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
116+
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384 h1:TFlARGu6Czu1z7q93HTxcP1P+/ZFC/IKythI5RzrnRg=
116117
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
117118
google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508=
118119
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=

0 commit comments

Comments
 (0)