From 38208e7d0c06d9684c9ac641dd44b4d75c2bfc5a Mon Sep 17 00:00:00 2001 From: Dawid Sowa Date: Tue, 22 Oct 2024 14:30:02 +0200 Subject: [PATCH] fix: remove `proofOfOwnership` from `unathorizedRequest` Proof Of Ownership can only be part of authorized request --- .../data-request/helpers/to-wallet-request.ts | 2 +- .../transformations/rdt-to-wallet.ts | 9 +++++---- .../transformations/wallet-to-rdt.ts | 17 +++++++++-------- .../modules/wallet-request/wallet-request.ts | 4 +++- packages/dapp-toolkit/src/schemas/index.ts | 2 -- 5 files changed, 18 insertions(+), 16 deletions(-) diff --git a/packages/dapp-toolkit/src/modules/wallet-request/data-request/helpers/to-wallet-request.ts b/packages/dapp-toolkit/src/modules/wallet-request/data-request/helpers/to-wallet-request.ts index 4b62c66b..ea9ada8b 100644 --- a/packages/dapp-toolkit/src/modules/wallet-request/data-request/helpers/to-wallet-request.ts +++ b/packages/dapp-toolkit/src/modules/wallet-request/data-request/helpers/to-wallet-request.ts @@ -48,7 +48,7 @@ export const toWalletRequest = ({ oneTime, } - if (!oneTime) { + if (!oneTime || dataRequestState.proofOfOwnership) { const persona = walletData.persona if (walletData.persona) draft.persona = persona diff --git a/packages/dapp-toolkit/src/modules/wallet-request/data-request/transformations/rdt-to-wallet.ts b/packages/dapp-toolkit/src/modules/wallet-request/data-request/transformations/rdt-to-wallet.ts index f88cf299..333d2321 100644 --- a/packages/dapp-toolkit/src/modules/wallet-request/data-request/transformations/rdt-to-wallet.ts +++ b/packages/dapp-toolkit/src/modules/wallet-request/data-request/transformations/rdt-to-wallet.ts @@ -51,7 +51,7 @@ export const TransformRdtDataRequestToWalletRequestInput = object({ const isAuthorized = ( input: TransformRdtDataRequestToWalletRequestInput, ): boolean => { - const { persona, accounts, personaData } = input + const { persona, accounts, personaData, proofOfOwnership } = input const isPersonaLogin = !!persona const shouldResetData = accounts?.reset || personaData?.reset @@ -62,8 +62,9 @@ const isAuthorized = ( shouldResetData || isOngoingAccountsRequest || isOngoingPersonaDataRequest || - isPersonaLogin - ) + isPersonaLogin || + proofOfOwnership + ) return isAuthorizedRequest } @@ -130,7 +131,7 @@ const withProofOfOwnershipRequestItem = const { challenge, accountAddresses, identityAddress } = input.proofOfOwnership - if (challenge) { + if (challenge && updatedRequestItems.discriminator === 'authorizedRequest') { updatedRequestItems['proofOfOwnership'] = { challenge, } diff --git a/packages/dapp-toolkit/src/modules/wallet-request/data-request/transformations/wallet-to-rdt.ts b/packages/dapp-toolkit/src/modules/wallet-request/data-request/transformations/wallet-to-rdt.ts index 1bbfbbbe..e2369883 100644 --- a/packages/dapp-toolkit/src/modules/wallet-request/data-request/transformations/wallet-to-rdt.ts +++ b/packages/dapp-toolkit/src/modules/wallet-request/data-request/transformations/wallet-to-rdt.ts @@ -150,6 +150,15 @@ const withProofs = ) draft.proofs.push(...accountProofs) } + + if (input.proofOfOwnership) { + draft.proofs.push( + ...convertOwnershipProofsToSignedChallenge( + input.proofOfOwnership.challenge, + input.proofOfOwnership.proofs, + ), + ) + } } if (input.discriminator === 'unauthorizedRequest') { if ( @@ -168,14 +177,6 @@ const withProofs = draft.proofs.push(...accountProofs) } } - if (input.proofOfOwnership) { - draft.proofs.push( - ...convertOwnershipProofsToSignedChallenge( - input.proofOfOwnership.challenge, - input.proofOfOwnership.proofs, - ), - ) - } }) export const transformWalletResponseToRdtWalletData = ( diff --git a/packages/dapp-toolkit/src/modules/wallet-request/wallet-request.ts b/packages/dapp-toolkit/src/modules/wallet-request/wallet-request.ts index b38bcf12..1977f473 100644 --- a/packages/dapp-toolkit/src/modules/wallet-request/wallet-request.ts +++ b/packages/dapp-toolkit/src/modules/wallet-request/wallet-request.ts @@ -340,7 +340,9 @@ export const WalletRequestModule = (input: { !state.walletData.persona && walletDataRequest.discriminator === 'authorizedRequest' - const isProofOfOwnershipRequest = !!walletDataRequest.proofOfOwnership + const isProofOfOwnershipRequest = + walletDataRequest.discriminator === 'authorizedRequest' && + !!walletDataRequest.proofOfOwnership const requestType = isLoginRequest ? 'loginRequest' diff --git a/packages/dapp-toolkit/src/schemas/index.ts b/packages/dapp-toolkit/src/schemas/index.ts index e82d17f1..2a6b8237 100644 --- a/packages/dapp-toolkit/src/schemas/index.ts +++ b/packages/dapp-toolkit/src/schemas/index.ts @@ -153,7 +153,6 @@ export type WalletUnauthorizedRequestItems = InferOutput< > export const WalletUnauthorizedRequestItems = object({ discriminator: literal('unauthorizedRequest'), - proofOfOwnership: optional(ProofOfOwnershipRequestItem), oneTimeAccounts: optional(AccountsRequestItem), oneTimePersonaData: optional(PersonaDataRequestItem), }) @@ -271,7 +270,6 @@ export type WalletUnauthorizedRequestResponseItems = InferOutput< > const WalletUnauthorizedRequestResponseItems = object({ discriminator: literal('unauthorizedRequest'), - proofOfOwnership: optional(ProofOfOwnershipResponseItem), oneTimeAccounts: optional(AccountsRequestResponseItem), oneTimePersonaData: optional(PersonaDataRequestResponseItem), })