@@ -53,9 +53,6 @@ func Middleware(storage Storage) gin.HandlerFunc {
5353}
5454
5555var (
56- // ErrNoTokenFound is returned when no token is found.
57- ErrNoTokenFound = errors .New ("no token found" )
58-
5956 // ErrBadTokenFormat is returned when the Authorization header is not in the correct Bearer format.
6057 ErrBadTokenFormat = errors .New ("bad token format" )
6158)
@@ -65,54 +62,33 @@ var (
6562// It will return an error if the token is invalid.
6663// It adds nothing to the context if the token is not present.
6764func ExtractToken (r * http.Request , storage Storage ) (context.Context , error ) {
68- type TokenSource func (r * http.Request ) (string , error )
69-
70- tokenSources := []TokenSource {
71- // Header: Authorization: Bearer <token>
72- func (r * http.Request ) (string , error ) {
73- authHeaderContent := r .Header .Get ("Authorization" )
74- if authHeaderContent == "" {
75- return "" , ErrNoTokenFound
76- }
77-
78- token , ok := strings .CutPrefix (authHeaderContent , "Bearer " )
79- if ! ok {
80- return "" , ErrBadTokenFormat
81- }
65+ authHeaderContent := r .Header .Get ("Authorization" )
66+ if authHeaderContent == "" {
67+ return r .Context (), nil
68+ }
8269
83- return token , nil
84- },
70+ token , ok := strings .CutPrefix (authHeaderContent , "Bearer " )
71+ if ! ok {
72+ return nil , ErrBadTokenFormat
8573 }
8674
87- for _ , tokenSource := range tokenSources {
88- token , err := tokenSource (r )
89- if errors .Is (err , ErrNoTokenFound ) {
90- continue // try next token source
91- }
92- if err != nil {
93- return nil , err
75+ tokenInfo , err := storage .Get (r .Context (), token )
76+ if err != nil {
77+ if errors .Is (err , ErrNotFound ) {
78+ return r .Context (), nil
9479 }
9580
96- tokenInfo , err := storage .Get (r .Context (), token )
97- if err != nil {
98- if errors .Is (err , ErrNotFound ) {
99- return r .Context (), nil
100- }
101-
102- return nil , err
103- }
81+ return nil , err
82+ }
10483
105- if err := tokenInfo .Validate (); err != nil {
106- return nil , BadTokenInfoError {
107- Token : token ,
108- Err : err ,
109- }
84+ if err := tokenInfo .Validate (); err != nil {
85+ return nil , BadTokenInfoError {
86+ Token : token ,
87+ Err : err ,
11088 }
111-
112- return WithUser (r .Context (), tokenInfo ), nil
11389 }
11490
115- return r .Context (), nil
91+ return WithUser ( r .Context (), tokenInfo ), nil
11692}
11793
11894// BadTokenInfoError is returned when the token info is invalid.
0 commit comments