mirror of
https://github.com/hanzoai/passport-jwt.git
synced 2026-09-24 17:01:40 +00:00
54 lines
1.9 KiB
TypeScript
54 lines
1.9 KiB
TypeScript
import {
|
|
JwtStrategy,
|
|
JwtStrategyOptionsBase,
|
|
UnifiedVerifyCallback,
|
|
JwtStrategyOptions,
|
|
ProviderOrValueBase
|
|
} from "./jwt_strategy";
|
|
import {JsonWebTokenDriver} from "./platforms/jsonwebtoken";
|
|
import jsonwebtoken, {VerifyOptions, Algorithm} from "jsonwebtoken";
|
|
import type {DefaultPayload} from "./platforms/base";
|
|
|
|
interface LegacyOptions {
|
|
audience?: string;
|
|
issuer?: string;
|
|
algorithms?: Algorithm[];
|
|
ignoreExpiration?: boolean;
|
|
jsonWebTokenOptions?: VerifyOptions;
|
|
jwtDriver?: undefined;
|
|
}
|
|
|
|
type JwtAutoStrategyOptions<Request extends boolean = boolean> =
|
|
ProviderOrValueBase<string, "jwtDriver">
|
|
& JwtStrategyOptionsBase<Request>
|
|
& LegacyOptions;
|
|
|
|
class JwtAutoStrategy<Payload extends DefaultPayload = DefaultPayload,
|
|
Request extends boolean = false> extends JwtStrategy<Payload, string, Request> {
|
|
|
|
/* to override the auto driver, mainly used for testing */
|
|
public static OverrideAutoDriver = JsonWebTokenDriver;
|
|
protected static override ignoreLegacy = true;
|
|
|
|
constructor(
|
|
extOptions: JwtAutoStrategyOptions,
|
|
verify: UnifiedVerifyCallback<Payload, Request>
|
|
) {
|
|
const driverOptions = {
|
|
...(extOptions.jsonWebTokenOptions ?? {}),
|
|
...{
|
|
issuer: extOptions.issuer ?? extOptions?.jsonWebTokenOptions?.issuer,
|
|
algorithms: extOptions.algorithms ?? extOptions?.jsonWebTokenOptions?.algorithms,
|
|
ignoreExpiration: extOptions.ignoreExpiration ?? extOptions?.jsonWebTokenOptions?.ignoreExpiration,
|
|
audience: extOptions.audience ?? extOptions?.jsonWebTokenOptions?.audience,
|
|
}
|
|
};
|
|
super({
|
|
jwtDriver: new JwtAutoStrategy.OverrideAutoDriver(jsonwebtoken, driverOptions),
|
|
...extOptions,
|
|
} as JwtStrategyOptions<string, Request>, verify);
|
|
}
|
|
}
|
|
|
|
export {JwtAutoStrategy as Strategy, JwtAutoStrategyOptions};
|