{"id":19967609,"url":"https://github.com/ceramicstudio/multiauth","last_synced_at":"2025-07-11T00:07:16.980Z","repository":{"id":66063747,"uuid":"360537263","full_name":"ceramicstudio/multiauth","owner":"ceramicstudio","description":null,"archived":false,"fork":false,"pushed_at":"2021-11-01T23:22:06.000Z","size":1147,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-01T17:47:50.151Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ceramicstudio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-04-22T13:54:30.000Z","updated_at":"2021-11-01T23:22:09.000Z","dependencies_parsed_at":"2023-02-21T00:16:47.799Z","dependency_job_id":null,"html_url":"https://github.com/ceramicstudio/multiauth","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ceramicstudio/multiauth","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceramicstudio%2Fmultiauth","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceramicstudio%2Fmultiauth/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceramicstudio%2Fmultiauth/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceramicstudio%2Fmultiauth/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ceramicstudio","download_url":"https://codeload.github.com/ceramicstudio/multiauth/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceramicstudio%2Fmultiauth/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264696284,"owners_count":23650935,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T02:43:01.103Z","updated_at":"2025-07-11T00:07:16.975Z","avatar_url":"https://github.com/ceramicstudio.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Multiauth\n\nBlockchain authentication for React apps\n\n## Installation\n\n```sh\nnpm install @ceramicstudio/multiauth\n```\n\n## Setup\n\n\u003e Only Ethereum is currently supported\n\n### 1. Configure Ethereum connectors\n\nMultiauth uses [Web3React](https://github.com/NoahZinsmeister/web3-react) for Ethereum, and re-exports the following connectors so they can be imported directly from `@ceramicstudio/multiauth`:\n\n- `FortmaticConnector`\n- `InjectedConnector`\n- `PortisConnector`\n- `TorusConnector`\n- `WalletConnectConnector`\n\nConnectors can be setup manually as followed:\n\n```ts\nimport { InjectedConnector } from '@ceramicstudio/multiauth'\n\nconst connectors = [\n  { key: 'injected', connector: new InjectedConnector({ supportedChainIds: [1, 3] }) },\n]\n```\n\nConnectors can also be created based on environment variables:\n\n```ts\nimport { getEnvEthereumConnectors } from '@ceramicstudio/multiauth'\n\nconst fromEnv = getEnvEthereumConnectors('PREFIX') // Prefix defaults to 'MULTIAUTH'\nconst connectors = [fromEnv.injected, fromEnv.walletConnect].filter(Boolean) // Filter out `null` values\n```\n\nUsing the following environment variables (with the given prefix instead of `MULTIAUTH`):\n\n- `fortmatic` (`FortmaticConnector`):\n  - `MULTIAUTH_FORTMATIC_API_KEY`\n  - `MULTIAUTH_FORTMATIC_CHAIN_ID`: chain ID, ex `3`\n- `injected` (`InjectedConnector`):\n  - `MULTIAUTH_INJECTED_CHAIN_IDS`: comma-separared chain IDs, ex `1,3`\n- `portis` (`PortisConnector`):\n  - `MULTIAUTH_PORTIS_DAPP_ID`\n  - `MULTIAUTH_PORTIS_NETWORKS`: comma-separared networks, ex `1,3`\n- `torus` (`TorusConnector`):\n  - `MULTIAUTH_TORUS_CHAIN_ID`: chain ID, ex `3`\n- `walletConnect` (`WalletConnectConnector`):\n  - `MULTIAUTH_WALLETCONNECT_CHAIN_ID`: chain ID, ex `3`\n  - `MULTIAUTH_WALLETCONNECT_RPC_URL`: JSON-RPC URL to connect to network\n\n### 2. Inject the Provider at the root of the components tree\n\n```tsx\nimport { Provider } from '@ceramicstudio/multiauth'\n\nconst connectors = ... // From previous step\n\nexport function App(props) {\n  return \u003cProvider providers={[{ key: 'ethereum', connectors }]}\u003e{props.children}\u003c/Provider\u003e\n}\n```\n\n## Usage\n\n```tsx\nimport { useMultiAuth } from '@ceramicstudio/multiauth'\n\nfunction HelloMultiAuth() {\n  const [state, connect, disconnect] = useMultiAuth()\n\n  switch (state.status) {\n    case 'connected':\n      return \u003cp\u003eConnected with account: {state.connected.accountID.toString()}\u003c/p\u003e\n    case 'connecting':\n      return \u003cp\u003eConnecting...\u003c/p\u003e\n    case 'disconnected':\n      return \u003cp\u003eDisconnected\u003c/p\u003e\n    case 'failed':\n      return \u003cp\u003eFailed to connect: {state.error?.message}\u003c/p\u003e\n  }\n}\n```\n\n## License\n\nGPL 3.0 or later\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fceramicstudio%2Fmultiauth","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fceramicstudio%2Fmultiauth","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fceramicstudio%2Fmultiauth/lists"}