From 6b9b524c54a18dca9cc5bab34f0d058716e9d116 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Sat, 10 Feb 2024 15:28:08 +0100 Subject: [PATCH] feat(react): expose dpop method generation (#1291) (release) --- packages/react-oidc/src/ReactOidc.tsx | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/react-oidc/src/ReactOidc.tsx b/packages/react-oidc/src/ReactOidc.tsx index 005e44710..805e183a1 100644 --- a/packages/react-oidc/src/ReactOidc.tsx +++ b/packages/react-oidc/src/ReactOidc.tsx @@ -1,5 +1,6 @@ import { StringMap, OidcClient } from '@axa-fr/oidc-client'; import { useEffect, useState } from 'react'; +import {Tokens} from "@axa-fr/oidc-client/dist/parseTokens"; const defaultConfigurationName = 'default'; @@ -72,6 +73,7 @@ const initTokens = (configurationName: string) => { return { accessToken: tokens.accessToken, accessTokenPayload: tokens.accessTokenPayload, + generateDemonstrationOfProofOfPossessionAsync: oidc.configuration.demonstrating_proof_of_possession ? (url:string, method:string) => oidc.generateDemonstrationOfProofOfPossessionAsync(tokens.accessToken, url, method) : null, }; } return accessTokenInitialState; @@ -80,6 +82,11 @@ const initTokens = (configurationName: string) => { export type OidcAccessToken = { accessToken?: any; accessTokenPayload?: any; + generateDemonstrationOfProofOfPossessionAsync?: any; +} + +function getGenerateDemonstrationOfProofOfPossessionAsync(oidc: OidcClient, tokens: Tokens) { + return oidc.configuration.demonstrating_proof_of_possession ? (url: string, method: string) => oidc.generateDemonstrationOfProofOfPossessionAsync(tokens.accessToken, url, method) : null; } export const useOidcAccessToken = (configurationName = defaultConfigurationName) => { @@ -103,7 +110,11 @@ export const useOidcAccessToken = (configurationName = defaultConfigurationName) name === OidcClient.eventNames.syncTokensAsync_error) { if (isMounted) { const tokens = oidc.tokens; - setAccessToken(tokens != null ? { accessToken: tokens.accessToken, accessTokenPayload: tokens.accessTokenPayload } : accessTokenInitialState); + setAccessToken(tokens != null ? { + accessToken: tokens.accessToken, + accessTokenPayload: tokens.accessTokenPayload , + generateDemonstrationOfProofOfPossessionAsync: getGenerateDemonstrationOfProofOfPossessionAsync(oidc, tokens), + } : accessTokenInitialState); } } });