Skip to content

Fix failure of calling authenticated APIs when multiple AsgardeoProvider instances are used#334

Merged
DonOmalVindula merged 11 commits intoasgardeo:mainfrom
kavindadimuthu:refactor/singleton-to-multiton
Feb 18, 2026
Merged

Fix failure of calling authenticated APIs when multiple AsgardeoProvider instances are used#334
DonOmalVindula merged 11 commits intoasgardeo:mainfrom
kavindadimuthu:refactor/singleton-to-multiton

Conversation

@kavindadimuthu
Copy link
Copy Markdown
Contributor

@kavindadimuthu kavindadimuthu commented Jan 23, 2026

This pull request introduces adoption of a Multiton pattern in AsgardeoSPAClient, allowing multiple authentication contexts to coexist within the same application by managing client instances via unique IDs. Several React level APIs have been updated to accept and propagate these instance IDs, ensuring correct isolation and management of authentication state per instance.

Multiton pattern implementation and API updates for instance-awareness::

  • Refactored AsgardeoSPAClient in client.ts to implement a Multiton pattern, including new static methods for managing instances (getInstance, hasInstance, destroyInstance, getInstanceKeys, destroyAllInstances), and added an instance ID accessor (getInstanceId). [1] [2] [3]
  • Updated AsgardeoReactClient and all organization-related API functions (createOrganization, getAllOrganizations, getMeOrganizations, getOrganization) in React to accept an optional instanceId parameter and use the correct client instance for requests. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]

Related Issues

Related PRs

Checklist

  • Followed the CONTRIBUTING guidelines.
  • Manual test round performed and verified.
  • Documentation provided. (Add links if there are any)
  • Unit tests provided. (Add links if there are any)

Security checks

Comment thread packages/javascript/src/__legacy__/client.ts Outdated
@kavindadimuthu kavindadimuthu force-pushed the refactor/singleton-to-multiton branch from db06041 to 2af8495 Compare February 16, 2026 12:54
Copy link
Copy Markdown
Contributor

@DonOmalVindula DonOmalVindula left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the changes. Left some comments. Please address them before merging.

@DonOmalVindula
Copy link
Copy Markdown
Contributor

DonOmalVindula commented Feb 17, 2026

Issue: packages/browser/src/utils/http.ts was not updated

This file still has module-level getInstance() calls without an instanceId:

request: AsgardeoSPAClient.getInstance().httpRequest.bind(AsgardeoSPAClient.getInstance()),
requestAll: AsgardeoSPAClient.getInstance().httpRequestAll.bind(AsgardeoSPAClient.getInstance()),

This is the same pattern you fixed in all the packages/react/src/api/*.ts files. If anything uses this http util, it will always route to instance 0. Suggested fix — convert to a factory function that accepts instanceId:

const createHttp = (instanceId: number = 0) => {
  const client = AsgardeoSPAClient.getInstance(instanceId);
  return {
    request: client.httpRequest.bind(client),
    requestAll: client.httpRequestAll.bind(client),
  };
};

export default createHttp;

Or alternatively, if this is only used internally, pass the instanceId through from the caller.

Comment thread packages/javascript/src/__legacy__/client.ts
Comment thread packages/javascript/src/__legacy__/client.ts
Comment thread packages/react/src/api/getScim2Me.ts Outdated
Comment thread .changeset/loud-memes-admire.md Outdated
Comment thread packages/browser/src/__legacy__/client.ts
Comment thread packages/browser/src/__legacy__/client.ts
Comment thread .changeset/loud-memes-admire.md Outdated
@asgardeo-github-bot
Copy link
Copy Markdown

🦋 Changeset detected

The changes in this PR will be included in the next version bump.

Not sure what this means? Click here to learn what changesets are.

@DonOmalVindula DonOmalVindula merged commit 2d6ad37 into asgardeo:main Feb 18, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

bug: Fails Authenticated API Calls When Multiple AsgardeoProvider Instances Are Used

3 participants