1.1.9 • Published 8 months ago
react-sui-zk-login-kit v1.1.9
✨ Link to Demo ✨
📺 Youtube video guide 📺
react-sui-zk-login-kit
React Kit for seamless ZK Login integration for Sui blokchain
Table of Contents
Installation
npm install react-sui-zk-login-kit react -Syarn add react-sui-zk-login-kit reactUsage
For Next JS
- use Provider and Component with 'use-client'
- if experience problem with default remove hash from url try "disableRemoveHash" prop
Example Usage in Your React App
App.tsx
import {SuiClient} from '@mysten/sui/client';
import {Content} from "./Content";
import {ZKLoginProvider} from 'react-sui-zk-login-kit';
const FULLNODE_URL = "https://fullnode.devnet.sui.io/";
const suiClient = new SuiClient({url: FULLNODE_URL});
function App() {
return (
<ZKLoginProvider client={suiClient}>
<Content/>
</ZKLoginProvider>
)
}
export default App;Content.tsx
import {useEffect} from "react";
import {generateRandomness} from "@mysten/sui/zklogin";
import {ZKLogin, useZKLogin} from "react-sui-zk-login-kit";
const SUI_PROVER_ENDPOINT = 'https://prover-dev.mystenlabs.com/v1';
// values can be stored in .env
const providers = {
google: {
clientId: "YOUR_GOOGLE_CLIENT_ID",
redirectURI: "YOUR_REDIRECT_URI",
},
twitch: {
clientId: "YOUR_TWITCH_CLIENT_ID",
redirectURI: "YOUR_REDIRECT_URI",
}
}
export const Content = () => {
const {encodedJwt, userSalt, setUserSalt, address, logout} = useZKLogin();
useEffect(() => {
if (encodedJwt) {
// make you request to your server
// for recive useSalt by jwt.iss (issuer id)
const requestMock = new Promise(
(resolve): void =>
resolve(localStorage.getItem("userSalt") || generateRandomness())
);
requestMock.then(salt => setUserSalt(String(salt)))
}
}, [encodedJwt]);
return (
<ZKLogin
providers={providers}
proverProvider={SUI_PROVER_ENDPOINT}
/>
)
}Documentation
Types
ZKLogin Component Props
| Name | Type | Description | |
|---|---|---|---|
providers | Providers | OAuth providers configuration. | |
proverProvider | string | URL of the prover service for ZK proofs. | |
title? | string | Title text for the component. | |
subTitle? | string | Subtitle text for the component. | |
loadingText? | string | Loading text | |
errorText? | string | Error text | |
userSalt? | string | Optional user-specific salt. | |
observeTokenInURL? | boolean | default - true Observer token in URL | |
disableRemoveHash? | boolean | default - false (Mostly for NextJS) Disable removing hash from url. | |
onSuccess? | () => void | On Success login hook | Decoded JWT payload. |
useZKLogin Hook Props Object
| Name | Type | Description |
|---|---|---|
onTransactionFailed? | () => void | Optional, hook on transaction failed execute |
useZKLogin Hook Return
| Name | Type | Description | |
|---|---|---|---|
encodedJwt | string \| null | JWT string from the authentication process. | |
userSalt | string | User-specific salt. | |
address | string \| null | Address | User's Sui blockchain address. |
logout | () => void | Function to log out the user. | |
setUserSalt | (value: string) => void | Set new user salt | Function to set the user salt. |
keypair | Ed25519Keypair \| null | User keypair | Ephemeral keypair for cryptographic operations. |
executeTransaction | (transaction: Transaction) => Promise<string \| void> | Executes a Sui blockchain transaction. | |
client | SuiClient | The Sui blockchain client instance. | |
decodedJwt | JwtPayload \| null | Decoded JWT from used Oauth | Decoded JWT payload. |
Contributing
Contributions are welcome! Please fork the repository and submit a pull request with detailed descriptions of your changes.
License
1.1.9
8 months ago
1.1.8
8 months ago
1.1.7
8 months ago
1.1.6
8 months ago
1.1.5
8 months ago
1.1.4
8 months ago
1.1.3
8 months ago
1.1.2
8 months ago
1.1.1
8 months ago
1.0.38
8 months ago
1.0.37
8 months ago
1.0.36
8 months ago
1.0.35
8 months ago
1.0.34
8 months ago
1.0.33
8 months ago
1.0.32
8 months ago
1.0.31
8 months ago
1.0.30
8 months ago
1.0.28
8 months ago
1.0.27
8 months ago
1.0.26
9 months ago
1.0.24
10 months ago
1.0.23
10 months ago
1.0.22
10 months ago
1.0.21
10 months ago
1.0.20
10 months ago
1.0.19
10 months ago
1.0.17
10 months ago
1.0.15
10 months ago
1.0.14
10 months ago
1.0.13
10 months ago
