Skip to content

Commit 0683eec

Browse files
committed
replace log.Fatal with 500 error mesagge.
Signed-off-by: Bo-Yi Wu <[email protected]>
1 parent 29e0483 commit 0683eec

File tree

2 files changed

+40
-13
lines changed

2 files changed

+40
-13
lines changed

auth_jwt.go

+21-13
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"errors"
55
"github.com/gin-gonic/gin"
66
"gopkg.in/dgrijalva/jwt-go.v3"
7-
"log"
87
"net/http"
98
"strings"
109
"time"
@@ -65,17 +64,6 @@ type Login struct {
6564

6665
// MiddlewareInit initialize jwt configs.
6766
func (mw *GinJWTMiddleware) MiddlewareInit() error {
68-
if mw.Realm == "" {
69-
return errors.New("realm is required")
70-
}
71-
72-
if mw.Authenticator == nil {
73-
return errors.New("authenticator is required")
74-
}
75-
76-
if mw.Key == nil {
77-
return errors.New("secret key is required")
78-
}
7967

8068
if mw.SigningAlgorithm == "" {
8169
mw.SigningAlgorithm = "HS256"
@@ -100,13 +88,28 @@ func (mw *GinJWTMiddleware) MiddlewareInit() error {
10088
}
10189
}
10290

91+
if mw.Realm == "" {
92+
return errors.New("realm is required")
93+
}
94+
95+
if mw.Authenticator == nil {
96+
return errors.New("authenticator is required")
97+
}
98+
99+
if mw.Key == nil {
100+
return errors.New("secret key is required")
101+
}
102+
103103
return nil
104104
}
105105

106106
// MiddlewareFunc makes GinJWTMiddleware implement the Middleware interface.
107107
func (mw *GinJWTMiddleware) MiddlewareFunc() gin.HandlerFunc {
108108
if err := mw.MiddlewareInit(); err != nil {
109-
log.Fatal(err.Error())
109+
return func(c *gin.Context) {
110+
mw.unauthorized(c, http.StatusInternalServerError, err.Error())
111+
return
112+
}
110113
}
111114

112115
return func(c *gin.Context) {
@@ -286,6 +289,11 @@ func (mw *GinJWTMiddleware) parseToken(c *gin.Context) (*jwt.Token, error) {
286289
}
287290

288291
func (mw *GinJWTMiddleware) unauthorized(c *gin.Context, code int, message string) {
292+
293+
if mw.Realm == "" {
294+
mw.Realm = "gin jwt"
295+
}
296+
289297
c.Header("WWW-Authenticate", "JWT realm="+mw.Realm)
290298
c.Abort()
291299

auth_jwt_test.go

+19
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,25 @@ func ginHandler(auth *GinJWTMiddleware) *gin.Engine {
130130
return r
131131
}
132132

133+
func TestInternalServerError(t *testing.T) {
134+
// the middleware to test
135+
authMiddleware := &GinJWTMiddleware{}
136+
137+
handler := ginHandler(authMiddleware)
138+
139+
r := gofight.New()
140+
141+
r.GET("/auth/hello").
142+
Run(handler, func(r gofight.HTTPResponse, rq gofight.HTTPRequest) {
143+
data := []byte(r.Body.String())
144+
145+
message, _ := jsonparser.GetString(data, "message")
146+
147+
assert.Equal(t, "realm is required", message)
148+
assert.Equal(t, http.StatusInternalServerError, r.Code)
149+
})
150+
}
151+
133152
func TestLoginHandler(t *testing.T) {
134153

135154
// the middleware to test

0 commit comments

Comments
 (0)