Skip to content

Commit 0f3f69a

Browse files
Merge pull request #83 from reclaimprotocol/feat/regional-error
feat: require callback URL for regional portals
2 parents 418be26 + 17d53f2 commit 0f3f69a

5 files changed

Lines changed: 47 additions & 39 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ Install the Reclaim Protocol SDK and a QR code generator:
3737
npm install @reclaimprotocol/js-sdk react-qr-code
3838
```
3939

40-
**Current SDK Version**: 4.13.0
40+
**Current SDK Version**: 4.14.0
4141

4242
## Step 3: Set up your React component
4343

package-lock.json

Lines changed: 25 additions & 36 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@reclaimprotocol/js-sdk",
3-
"version": "4.13.0",
3+
"version": "4.14.0",
44
"description": "Designed to request proofs from the Reclaim protocol and manage the flow of claims and witness interactions.",
55
"main": "dist/index.js",
66
"types": "dist/index.d.ts",

src/Reclaim.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ import {
3333
SetSignatureError,
3434
SignatureGeneratingError,
3535
SignatureNotFoundError,
36-
ErrorDuringVerificationError
36+
ErrorDuringVerificationError,
37+
CallbackUrlRequiredError
3738
} from './utils/errors'
3839
import { validateContext, validateFunctionParams, validateParameters, validateSignature, validateURL, validateModalOptions, validateFunctionParamsWithFn, validateRedirectionMethod, validateRedirectionBody } from './utils/validationUtils'
3940
import { fetchStatusUrl, initSession, updateSession } from './utils/sessionUtils'
@@ -975,6 +976,23 @@ export class ReclaimProofRequest {
975976
if (!this.signature) {
976977
throw new SignatureNotFoundError('Signature is not set.')
977978
}
979+
980+
// When using a non-default regional portal, a custom callback URL is required
981+
const defaultHosts = ['share.reclaimprotocol.org', 'portal.reclaimprotocol.org'];
982+
if (this.customSharePageUrl) {
983+
try {
984+
const sharePageHost = new URL(this.customSharePageUrl).hostname;
985+
if (!defaultHosts.includes(sharePageHost) && !this.appCallbackUrl) {
986+
throw new CallbackUrlRequiredError(
987+
'A custom callback URL is required when using a customSharePage url'
988+
);
989+
}
990+
} catch (e) {
991+
if (e instanceof CallbackUrlRequiredError) throw e;
992+
// If URL parsing fails, skip this check — URL validation elsewhere will catch it
993+
}
994+
}
995+
978996
validateSignature(this.providerId, this.signature, this.applicationId, this.timeStamp)
979997
const templateData: TemplateData = {
980998
sessionId: this.sessionId,

src/utils/errors.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,4 @@ export const StatusUrlError = createErrorClass('StatusUrlError');
3939
export const InavlidParametersError = createErrorClass('InavlidParametersError');
4040
export const ProofSubmissionFailedError = createErrorClass('ProofSubmissionFailedError');
4141
export const ErrorDuringVerificationError = createErrorClass('ErrorDuringVerificationError');
42+
export const CallbackUrlRequiredError = createErrorClass('CallbackUrlRequiredError');

0 commit comments

Comments
 (0)