1.1.9 • Published 8 months ago

react-sui-zk-login-kit v1.1.9

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months ago

NPM Version

Link to Demo

📺 Youtube video guide 📺

welcome

react-sui-zk-login-kit

React Kit for seamless ZK Login integration for Sui blokchain

Table of Contents

  1. Installation
  2. Usage
  3. Documentation
  4. Contributing
  5. About

Installation

npm install react-sui-zk-login-kit react -S
yarn add react-sui-zk-login-kit react

Usage

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

NameTypeDescription
providersProvidersOAuth providers configuration.
proverProviderstringURL of the prover service for ZK proofs.
title?stringTitle text for the component.
subTitle?stringSubtitle text for the component.
loadingText?stringLoading text
errorText?stringError text
userSalt?stringOptional user-specific salt.
observeTokenInURL?booleandefault - true Observer token in URL
disableRemoveHash?booleandefault - false (Mostly for NextJS) Disable removing hash from url.
onSuccess?() => voidOn Success login hookDecoded JWT payload.

useZKLogin Hook Props Object

NameTypeDescription
onTransactionFailed?() => voidOptional, hook on transaction failed execute

useZKLogin Hook Return

NameTypeDescription
encodedJwtstring \| nullJWT string from the authentication process.
userSaltstringUser-specific salt.
addressstring \| nullAddressUser's Sui blockchain address.
logout() => voidFunction to log out the user.
setUserSalt(value: string) => voidSet new user saltFunction to set the user salt.
keypairEd25519Keypair \| nullUser keypairEphemeral keypair for cryptographic operations.
executeTransaction(transaction: Transaction) => Promise<string \| void>Executes a Sui blockchain transaction.
clientSuiClientThe Sui blockchain client instance.
decodedJwtJwtPayload \| nullDecoded JWT from used OauthDecoded JWT payload.

Contributing

Contributions are welcome! Please fork the repository and submit a pull request with detailed descriptions of your changes.


License

MIT

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