Skip to content

Commit 665af28

Browse files
committed
Fixed not completing refresh tokens
1 parent 72e4cfa commit 665af28

File tree

2 files changed

+37
-4
lines changed

2 files changed

+37
-4
lines changed

src/AccessToken.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ class AccessToken extends JWT {
140140
let responseTypes = request.responseTypes || []
141141
let refresh
142142

143-
if (code || responseTypes.includes('code')) {
143+
if (code || responseTypes.includes('code') || request.grantType === 'refresh_token') {
144144
refresh = random(16)
145145
}
146146

src/handlers/TokenRequest.js

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,10 @@ class TokenRequest extends BaseRequest {
3838
.then(request.authenticateClient)
3939
.then(request.verifyAuthorizationCode)
4040
.then(request.grant)
41-
.catch(err => request.error(err))
41+
.catch(err => {
42+
console.error(err)
43+
request.error(err)
44+
})
4245
}
4346

4447
/**
@@ -497,8 +500,38 @@ class TokenRequest extends BaseRequest {
497500
* @returns {Promise<Object>} Resolves to response object
498501
*/
499502
refreshTokenGrant (request) {
500-
// TODO: I don't think this.tokenResponse is implemented..
501-
return AccessToken.refresh(request).then(this.tokenResponse)
503+
return Promise.resolve({})
504+
.then(() => this.verifyRefreshToken(request))
505+
.then(response => request.includeAccessToken(response))
506+
.then(response => {
507+
request.res.json(response)
508+
})
509+
}
510+
511+
/**
512+
* Verify the refresh token
513+
*/
514+
verifyRefreshToken(request) {
515+
const { params, provider } = request;
516+
const refreshToken = params['refresh_token']
517+
if (!refreshToken || typeof refreshToken !== 'string') {
518+
return request.badRequest({
519+
error: 'invalid_grant',
520+
error_description: 'Invalid refresh token'
521+
})
522+
}
523+
return provider.backend.get('refresh', refreshToken).then((refreshTokenInfo) => {
524+
if (!refreshTokenInfo) {
525+
return request.badRequest({
526+
error: 'invalid_grant',
527+
error_description: 'Refresh token not found'
528+
})
529+
}
530+
request.subject = {
531+
_id: refreshTokenInfo.payload.sub
532+
}
533+
return {}
534+
})
502535
}
503536

504537
/**

0 commit comments

Comments
 (0)