Skip to content

Commit 2fbe43c

Browse files
authored
fix: Use @fastify/error to create errors FST_BEARER_AUTH_MISSING_AUTHORIZATION_HEADER and FST_BEARER_AUTH_INVALID_AUTHORIZATION_HEADER (#179)
1 parent afb6969 commit 2fbe43c

File tree

2 files changed

+18
-10
lines changed

2 files changed

+18
-10
lines changed

lib/errors.js

+5-1
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,14 @@ const FST_BEARER_AUTH_INVALID_KEYS_OPTION_TYPE = createError('FST_BEARER_AUTH_IN
66
const FST_BEARER_AUTH_INVALID_LOG_LEVEL = createError('FST_BEARER_AUTH_INVALID_LOG_LEVEL', 'fastify.log does not have level \'%s\'')
77
const FST_BEARER_AUTH_KEYS_OPTION_INVALID_KEY_TYPE = createError('FST_BEARER_AUTH_KEYS_OPTION_INVALID_KEY_TYPE', 'options.keys has to contain only string entries')
88
const FST_BEARER_AUTH_INVALID_SPEC = createError('FST_BEARER_AUTH_INVALID_SPEC', 'options.specCompliance has to be set to \'rfc6750\' or \'rfc6749\'')
9+
const FST_BEARER_AUTH_MISSING_AUTHORIZATION_HEADER = createError('FST_BEARER_AUTH_MISSING_AUTHORIZATION_HEADER', 'missing authorization header', 401)
10+
const FST_BEARER_AUTH_INVALID_AUTHORIZATION_HEADER = createError('FST_BEARER_AUTH_INVALID_AUTHORIZATION_HEADER', 'invalid authorization header', 401)
911

1012
module.exports = {
1113
FST_BEARER_AUTH_INVALID_KEYS_OPTION_TYPE,
1214
FST_BEARER_AUTH_INVALID_LOG_LEVEL,
1315
FST_BEARER_AUTH_KEYS_OPTION_INVALID_KEY_TYPE,
14-
FST_BEARER_AUTH_INVALID_SPEC
16+
FST_BEARER_AUTH_INVALID_SPEC,
17+
FST_BEARER_AUTH_MISSING_AUTHORIZATION_HEADER,
18+
FST_BEARER_AUTH_INVALID_AUTHORIZATION_HEADER
1519
}

lib/verify-bearer-auth-factory.js

+13-9
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ const authenticate = require('./authenticate')
44
const {
55
FST_BEARER_AUTH_INVALID_KEYS_OPTION_TYPE,
66
FST_BEARER_AUTH_KEYS_OPTION_INVALID_KEY_TYPE,
7-
FST_BEARER_AUTH_INVALID_SPEC
7+
FST_BEARER_AUTH_INVALID_SPEC,
8+
FST_BEARER_AUTH_MISSING_AUTHORIZATION_HEADER,
9+
FST_BEARER_AUTH_INVALID_AUTHORIZATION_HEADER
810
} = require('./errors')
911

1012
const validSpecs = new Set([
@@ -60,26 +62,27 @@ module.exports = function verifyBearerAuthFactory (options, done) {
6062
return authorizationHeader.substring(0, bearerTypePrefixLength).toLowerCase() !== bearerTypePrefix
6163
}
6264

63-
function handleUnauthorized (request, reply, done, message) {
64-
const noHeaderError = Error(message)
65-
if (verifyErrorLogLevel) request.log[verifyErrorLogLevel]('unauthorized: %s', noHeaderError.message)
65+
function handleUnauthorized (request, reply, done, error) {
66+
if (verifyErrorLogLevel) request.log[verifyErrorLogLevel]('unauthorized: %s', error.message)
6667
if (contentType) reply.header('content-type', contentType)
6768
reply.code(401)
6869
if (!addHook) {
69-
done(noHeaderError)
70+
done(error)
7071
return
7172
}
72-
reply.send(errorResponse(noHeaderError))
73+
reply.send(errorResponse(error))
7374
}
7475

7576
return function verifyBearerAuth (request, reply, done) {
7677
const authorizationHeader = request.raw.headers.authorization
7778
if (!authorizationHeader) {
78-
return handleUnauthorized(request, reply, done, 'missing authorization header')
79+
const error = new FST_BEARER_AUTH_MISSING_AUTHORIZATION_HEADER()
80+
return handleUnauthorized(request, reply, done, error)
7981
}
8082

8183
if (verifyBearerType(authorizationHeader)) {
82-
return handleUnauthorized(request, reply, done, 'invalid authorization header')
84+
const error = new FST_BEARER_AUTH_INVALID_AUTHORIZATION_HEADER()
85+
return handleUnauthorized(request, reply, done, error)
8386
}
8487

8588
const key = authorizationHeader.substring(bearerTypePrefixLength).trim()
@@ -106,7 +109,8 @@ module.exports = function verifyBearerAuthFactory (options, done) {
106109
Promise.resolve(retVal).then((val) => {
107110
// if val is not truthy return 401
108111
if (val === false) {
109-
handleUnauthorized(request, reply, done, 'invalid authorization header')
112+
const error = new FST_BEARER_AUTH_INVALID_AUTHORIZATION_HEADER()
113+
handleUnauthorized(request, reply, done, error)
110114
return
111115
}
112116
if (val === true) {

0 commit comments

Comments
 (0)