Skip to content

Commit 80571a7

Browse files
committed
feat: add requestProcess helper for extracting data from requests
1 parent cfc0b62 commit 80571a7

File tree

2 files changed

+24
-3
lines changed

2 files changed

+24
-3
lines changed

Diff for: index.d.ts

+15
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,16 @@ declare namespace OAuth2Server {
203203
authorizationCodeLifetime?: number;
204204
}
205205

206+
interface TokenRequest {
207+
grant_type: string;
208+
client_assertion?: string;
209+
client_assertion_type?: string;
210+
client_id?: string;
211+
client_secret?: string;
212+
code_verifier?: string;
213+
scope?: string;
214+
}
215+
206216
interface TokenOptions {
207217
/**
208218
* Lifetime of generated access tokens in seconds (default = 1 hour)
@@ -233,6 +243,11 @@ declare namespace OAuth2Server {
233243
* Additional supported grant types.
234244
*/
235245
extendedGrantTypes?: Record<string, typeof AbstractGrantType>;
246+
247+
/**
248+
* Request processor
249+
*/
250+
requestProcessor?: ((request: Request) => TokenRequest)
236251
}
237252

238253
interface AssertionCredential {

Diff for: lib/handlers/token-handler.js

+9-3
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ class TokenHandler {
6161
this.allowExtendedTokenAttributes = options.allowExtendedTokenAttributes;
6262
this.requireClientAuthentication = options.requireClientAuthentication || {};
6363
this.alwaysIssueNewRefreshToken = options.alwaysIssueNewRefreshToken !== false;
64+
this.requestProcessor = options.requestProcessor;
6465
}
6566

6667
/**
@@ -85,8 +86,13 @@ class TokenHandler {
8586
}
8687

8788
try {
88-
const client = await this.getClient(request, response);
89-
const data = await this.handleGrantType(request, client);
89+
const body = this.requestProcessor?.(request) ?? request.body;
90+
const req = new Request({
91+
...request,
92+
body,
93+
});
94+
const client = await this.getClient(req, response);
95+
const data = await this.handleGrantType(req, client);
9096
const model = new TokenModel(data, { allowExtendedTokenAttributes: this.allowExtendedTokenAttributes });
9197
const tokenType = this.getTokenType(model);
9298

@@ -247,7 +253,7 @@ class TokenHandler {
247253
accessTokenLifetime: accessTokenLifetime,
248254
model: this.model,
249255
refreshTokenLifetime: refreshTokenLifetime,
250-
alwaysIssueNewRefreshToken: this.alwaysIssueNewRefreshToken
256+
alwaysIssueNewRefreshToken: this.alwaysIssueNewRefreshToken,
251257
};
252258

253259
return new Type(options).handle(request, client);

0 commit comments

Comments
 (0)