5.0.0-alpha.2 • Published 3 years ago

@credenza-web3/passport v5.0.0-alpha.2

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

Credenza3 Passport

Installation

with npm

npm install ethers
npm install @credenza-web3/passport

with yarn

yarn add ethers
yarn add @credenza-web3/passport

with pnpm

pnpm install ethers
pnpm install @credenza-web3/passport

or include a script tag

<script src="https://cdnjs.cloudflare.com/ajax/libs/ethers/6.0.8/ethers.umd.min.js" integrity="sha512-B/0gQMZc/py0Ldqgnuen4yZzABN1sz6dv65+2pVQHgOlIcrshSTJsk7yCSWqh0wh94KUD4Lr5F4HSWzcZjhqqw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://cdn.jsdelivr.net/npm/@credenza-web3/passport/dist/passport.umd.js"></script>
<script>
  const Passport = window.CredenzaPassport
</script>

or with esm

<script type="importmap">
  {
    "imports": {
      "ethers": "https://cdn.jsdelivr.net/npm/ethers@6.0.8/+esm"
    }
  }
</script>
<script type="module">
  import {Passport} from 'https://cdn.jsdelivr.net/npm/@credenza-web3/passport/+esm'
</script>

Usage

Create the Passport instance

const passport = new Passport({
  chainId: Passport.chains.GOERLI,
  config: {
    nav?: {
      theme?: Passport.themes.BLACK,
      direction?: Passport.navDirections.BOTTOM,
    },
    content?: {
      imageUrl?: 'https://yoursite.com/image.png', // Replaces default `Standford Socker` image
      signin: {
        title: "Your title!", // Replaces default ``
        description: "Your description.", // Replaces default ``
      },
      signup: {
        title: "Your title!", // Replaces default ``
        description: "Your description.", // Replaces default ``
      },
      logout: {
        title: "Your title!", // Replaces default ``
        description: "Your description!", // Replaces default ``
      },
      paymentResult?: {
        title?: "Your title!", // Replaces default `Success!`
        subtitle?: "Your subtitle!", // Replaces default `Your payment was successful!`
        description?: "Your description!", // Replaces default `Usually it takes us as many as a few minutes to deliver tokens to your account.`
      }
    },
    metamask?: {
      disabled?: false,
    },
    magic?: {
      disabled?: false,
    },
    socialLogin?: {
      google?: {
        disabled: false
      }
    },
    auth?: {
      extendedRegistration: false,
    },
    buyTokens?: {
      disabled?: false,
    },
    email?: {
      templateId?: string // For custom email template usage
    }
  },
})

await passport.init()

Passport instance Properties

isLoggedIn: boolean

chainId: string

ethers: Ethers.js https://docs.ethers.io/v5/

user: User instance

Passport static properties

Passport.version (string) Current package version

Passport.chains (enum) Supported chains

Passport.loginProviders (enum) Supported login providers

Passport.pages = (enum) Available pages for logged in User

Passport.paymentTypes = (enum) Available payment types

Passport.themes = (enum) Available color schemas

Passport.navDirections = (enum) Available directions where passport nav bar will expand when opened

Passport.navMinimizationTogglerPositions = (enum) Available minimization toggler positions

Modes

Passport can be used in 3 modes: Code UI Navigation

Apple Pay

You must verify your domain. https://support.stripe.com/questions/enable-apple-pay-on-your-stripe-account Enabled by default on all supported devices and registered domains.

Google Pay

Is enabled on all supported devices by default

Code mode

Login

const params = ['metamask'] || ['magicLink', {email:string}] || ['magicSms', {phone: string}]
const user = await passport.login(...params)

Logout

await passport.logout()

Get ethers provider

await passport.getWeb3Provider():Promise<EthersRPCProvider> // returns Ethers provider

Get current session address

await passport.getAddress():Promise<string | null>

Check membership

await passport.checkMembership(ownerAddress:string):Promise<{isMember:boolean, meta: unknown}>

Get current user roles

await passport.getRoles():Promise<(Admin | Superadmin | User)[]>

Get current user NFTs

await passport.getNfts():Promise<({
  amount: number
  contract_type: string // e.g. "ERC721"
  name: string
  symbol: string
  token_address: string
  token_id: string
  token_uri: string
})[]>

Get CRED Contract

await passport.getCREDContract():Promise<({
  address: string
  decimals: number
  contract: ethers.Contract
})>

Send CRED Stored Value

Do not pass contract if you transfer the native network tokens.

await passport.sendTokens(address: string, amount: string | bigint, contract?: ethers.Contract):Promise<any>

Send Credenza NFT

await passport.sendNft(contract: ethers.Contract, recipient: string, tokenId: string, amount: number):Promise<any>

Send email / phone number confirmation code

await passport.sendConfirmation({phone?:string, email?:string}):Promise<boolean>

Confirm email / phone number

await passport.confirmAccount({phoneCode?:number, emailCode?:number}):Promise<boolean>

Navigation mode

Show navigation panel

passport.showNavigation({
  bottom?: "5px",
  right?: "5px",
  left?: "inherit",
  top?: "inherit",
}, {
  minimization?: {
    enabled?: boolean, // false
    toggler?: {
      enabled?: boolean, // false
      position?: Passport.navMinimizationTogglerPositions.(LEFT | RIGHT), // left
    }
  }
}); // Bottom right corner

Hide navigation panel

passport.hideNavigation();

Passport UI mode

Open UI (Use one of Credenza.pages.PROFILE, Credenza.pages.PASSPORT_ID)

passport.openUI() // defaults to Credenza.pages.PROFILE

Close UI

passport.close()

Perform NFT or Membership payment

passport.openUI(Passport.pages.PAYMENT, {
  title: string,
  subtitle: string,
  payments?: {
    credenzaStoredValue?: {
        disabled?: boolean //default - false
    },
    stripe?: {
        disabled?: boolean // default - false
    }
  },
    // This will help credenza to get a price and figure out a token to be transferred
  token?: {
    address: string, // contract address
    tokenId?: string, // token id if exists
    amount?: number  // amount of tokens if exists. For ERC721 either ignore it, or set 1.
    typeId?: number // if buying membership and typeId exists. Should be either tokenId or typeId
  },
  email?: {
    templateId?: string // For custom email template usage
  }
})

Events (Most likely for Navigation and UI modes)

Triggers when user logs in

passport.onLogin(({provider, opts}) => {
  console.log('User is logged in with passport', {provider, opts})
})

Triggers when user updates profile (extended registration uses this event too)

passport.onUpdateProfile((user) => {
  console.log('User profile updated: ', user)
})

Triggers when users logs out

passport.onLogout(async () => {
  console.log('User is logged out with passport')
})

Triggers when a payment is completed

passport.onPayment(async ({type: string, data: any}) => {
  console.log('Payment', {type, data})
})

Triggers when user change metamask account

passport.onMetamaskAccountChange(async (account) => {
  console.log(`User changed metamask account to: ${account}`)
})

Triggers when user account is confirmed

passport.onAccountConfirmed(({ phone?: string; email?: string }) => {
  console.log('Account confirmed', {phone, email})
})

Triggers when passport error occurs

passport.onError(({provider, error}) => {
  console.log('Passport error', {provider, error})
})

Supported query params

Prepopulates email address on login / signup form.

?credenza_user_email=test%40test.com
// ?credenza_user_email=encodeURIComponent(test@test.com)
8.1.15

2 years ago

8.1.14

2 years ago

8.1.13

2 years ago

8.1.12

2 years ago

8.1.11

2 years ago

8.1.10

2 years ago

8.1.8

2 years ago

8.1.7

2 years ago

8.1.9

2 years ago

8.1.6

2 years ago

8.1.5

2 years ago

8.1.4

2 years ago

8.1.3

2 years ago

8.1.2

2 years ago

8.1.0

2 years ago

8.1.1

2 years ago

8.0.5

2 years ago

8.0.6

2 years ago

8.0.4

2 years ago

8.0.1

2 years ago

8.0.0

2 years ago

8.0.3

2 years ago

8.0.2

2 years ago

7.1.0

2 years ago

7.0.6

2 years ago

7.0.5

2 years ago

7.0.4

2 years ago

7.0.3

2 years ago

7.0.2

2 years ago

6.1.9

2 years ago

7.0.0-rc.8

2 years ago

7.0.0-rc.7

2 years ago

7.0.0-rc.9

2 years ago

7.0.0

2 years ago

7.0.1

2 years ago

7.0.0-rc.4

2 years ago

7.0.0-rc.6

2 years ago

7.0.0-rc.5

2 years ago

7.0.0-rc.3

2 years ago

7.0.0-rc.2

2 years ago

7.0.0-rc.1

2 years ago

6.1.6

2 years ago

6.1.5

2 years ago

6.1.8

2 years ago

6.1.7

2 years ago

6.1.2

2 years ago

6.1.1

2 years ago

6.1.4

2 years ago

6.1.3

2 years ago

6.0.0-alpha.3

2 years ago

6.0.0-alpha.4

2 years ago

6.0.0-alpha.5

2 years ago

6.0.0-alpha.6

2 years ago

5.6.19

2 years ago

5.6.18

2 years ago

5.6.15

2 years ago

5.6.14

2 years ago

5.6.17

2 years ago

5.6.16

2 years ago

5.6.11

2 years ago

5.6.10

2 years ago

6.0.0-alpha.1

2 years ago

5.6.13

2 years ago

6.0.0-alpha.2

2 years ago

5.6.12

2 years ago

6.0.13

2 years ago

6.0.12

2 years ago

6.0.11

2 years ago

6.0.10

2 years ago

5.5.13

3 years ago

5.5.11

3 years ago

5.5.12

3 years ago

5.5.10

3 years ago

5.7.0-alpha.3

2 years ago

5.7.0-alpha.4

2 years ago

5.7.0-alpha.1

2 years ago

5.7.0-alpha.2

2 years ago

5.7.0-alpha.7

2 years ago

5.7.0-alpha.8

2 years ago

5.7.0-alpha.5

2 years ago

5.7.0-alpha.6

2 years ago

5.6.15-alpha.2

2 years ago

5.7.0-alpha.9

2 years ago

5.6.15-alpha.1

2 years ago

6.0.7

2 years ago

6.0.6

2 years ago

6.0.9

2 years ago

6.0.8

2 years ago

6.0.1

2 years ago

6.0.0

2 years ago

5.4.7-beta.0

3 years ago

6.0.3

2 years ago

6.0.2

2 years ago

6.0.5

2 years ago

6.0.4

2 years ago

5.3.9

3 years ago

5.3.8

3 years ago

5.3.7

3 years ago

5.3.6

3 years ago

5.3.5

3 years ago

5.3.4

3 years ago

6.1.0

2 years ago

5.5.0-beta.3

3 years ago

5.5.0-beta.2

3 years ago

5.5.0-beta.1

3 years ago

5.5.0-beta.0

3 years ago

5.6.0-alpha.1

3 years ago

5.3.12

3 years ago

5.3.11

3 years ago

5.4.6

3 years ago

5.3.10

3 years ago

5.4.5

3 years ago

5.4.4

3 years ago

5.4.3

3 years ago

5.4.2

3 years ago

5.4.1

3 years ago

5.4.0

3 years ago

5.5.9

3 years ago

5.5.8

3 years ago

5.5.7

3 years ago

5.5.6

3 years ago

5.5.5

3 years ago

5.5.4

3 years ago

5.5.3

3 years ago

5.5.2

3 years ago

5.5.1

3 years ago

5.5.0

3 years ago

5.6.0-beta.1

3 years ago

5.6.9

2 years ago

5.6.8

2 years ago

5.6.7

2 years ago

5.6.6

2 years ago

5.6.5

2 years ago

5.6.4

2 years ago

5.6.3

2 years ago

5.6.2

2 years ago

5.6.1

2 years ago

5.6.0

3 years ago

5.7.0-alpha.10

2 years ago

5.7.0-alpha.11

2 years ago

5.3.3

3 years ago

5.3.2

3 years ago

5.3.1

3 years ago

5.3.0

3 years ago

5.2.13

3 years ago

5.2.12

3 years ago

5.2.9

3 years ago

5.2.8

3 years ago

5.2.11

3 years ago

5.2.10

3 years ago

5.0.30

3 years ago

5.0.31

3 years ago

5.0.32

3 years ago

5.0.33

3 years ago

5.0.34

3 years ago

5.0.26

3 years ago

5.0.27

3 years ago

5.0.28

3 years ago

5.0.29

3 years ago

5.1.9

3 years ago

5.1.8

3 years ago

5.1.7

3 years ago

5.1.6

3 years ago

5.1.5

3 years ago

5.1.4

3 years ago

5.1.3

3 years ago

5.1.2

3 years ago

5.1.1

3 years ago

5.1.0

3 years ago

5.2.7

3 years ago

5.2.6

3 years ago

5.2.5

3 years ago

5.2.4

3 years ago

5.2.3

3 years ago

5.2.2

3 years ago

5.2.1

3 years ago

5.2.0

3 years ago

5.1.16

3 years ago

5.1.15

3 years ago

5.1.14

3 years ago

5.1.13

3 years ago

5.1.12

3 years ago

5.1.11

3 years ago

5.1.10

3 years ago

5.0.0-rc.1

3 years ago

5.0.0-rc.2

3 years ago

5.0.0-rc.3

3 years ago

5.0.20

3 years ago

5.0.21

3 years ago

5.0.22

3 years ago

5.0.23

3 years ago

5.0.24

3 years ago

5.0.25

3 years ago

5.0.9

3 years ago

5.0.7

3 years ago

5.0.6

3 years ago

5.0.5

3 years ago

5.0.4

3 years ago

5.0.3

3 years ago

5.0.2

3 years ago

5.0.1

3 years ago

5.0.10

3 years ago

5.0.0

3 years ago

5.0.11

3 years ago

5.0.12

3 years ago

5.0.13

3 years ago

5.0.14

3 years ago

5.0.15

3 years ago

5.0.16

3 years ago

5.0.17

3 years ago

5.0.19

3 years ago

5.0.0-alpha.7

3 years ago

5.0.0-alpha.6

3 years ago

5.0.0-alpha.5

3 years ago

5.0.0-alpha.4

3 years ago

5.0.0-alpha.8

3 years ago

5.0.0-beta.4

3 years ago

5.0.0-beta.5

3 years ago

5.0.0-beta.2

3 years ago

5.0.0-rc.0

3 years ago

5.0.0-beta.3

3 years ago

5.0.0-beta.0

3 years ago

5.0.0-beta.1

3 years ago

5.0.0-alpha.3

3 years ago

5.0.0-alpha.2

3 years ago

5.0.0-alpha.1

3 years ago

5.0.0-alpha.0

3 years ago

4.2.5

3 years ago

4.2.4

3 years ago

4.2.6

3 years ago

4.1.7

3 years ago

4.2.3

3 years ago

4.2.2

3 years ago

4.2.1

3 years ago

4.2.0

3 years ago

4.0.0-alpha.1

3 years ago

4.0.0-alpha.0

3 years ago

3.2.2

3 years ago

3.2.1

3 years ago

3.2.0

3 years ago

3.2.4

3 years ago

3.2.3

3 years ago

4.0.0

3 years ago

3.1.3

3 years ago

3.1.2

3 years ago

3.1.1

3 years ago

3.1.0

3 years ago

3.1.7

3 years ago

3.1.6

3 years ago

3.1.5

3 years ago

3.1.4

3 years ago

4.0.0-rc.10

3 years ago

4.0.0-rc.12

3 years ago

4.0.0-rc.11

3 years ago

3.1.10

3 years ago

3.1.9

3 years ago

3.1.8

3 years ago

4.0.0-rc.9

3 years ago

4.0.0-rc.8

3 years ago

4.0.0-rc.1

3 years ago

4.0.0-rc.3

3 years ago

4.0.0-rc.2

3 years ago

4.0.0-rc.5

3 years ago

4.0.0-rc.4

3 years ago

4.0.0-rc.7

3 years ago

4.0.0-rc.6

3 years ago

4.1.4

3 years ago

4.1.3

3 years ago

4.1.6

3 years ago

4.1.5

3 years ago

4.1.0

3 years ago

4.1.2

3 years ago

4.1.1

3 years ago

2.4.1

3 years ago

2.4.3

3 years ago

2.2.13

3 years ago

2.4.2

3 years ago

2.2.11

3 years ago

2.2.12

3 years ago

3.0.4

3 years ago

3.0.3

3 years ago

3.0.2

3 years ago

3.0.1

3 years ago

3.0.6

3 years ago

3.0.5

3 years ago

2.3.8

3 years ago

2.3.7

3 years ago

2.3.9

3 years ago

3.0.0

3 years ago

2.3.0

3 years ago

2.5.0

3 years ago

2.3.2

3 years ago

2.3.1

3 years ago

2.3.4

3 years ago

2.3.3

3 years ago

2.3.6

3 years ago

2.3.5

3 years ago

2.3.12

3 years ago

2.3.11

3 years ago

2.3.10

3 years ago

2.2.1

3 years ago

2.2.0

3 years ago

2.0.2

3 years ago

2.2.3

3 years ago

2.2.2

3 years ago

2.2.5

3 years ago

2.2.4

3 years ago

2.2.7

3 years ago

2.2.6

3 years ago

2.2.10

3 years ago

2.0.1

3 years ago

2.0.0

3 years ago

2.1.0

3 years ago

2.2.9

3 years ago

2.2.8

3 years ago

1.0.11

3 years ago

1.0.15

3 years ago

1.0.14

3 years ago

1.0.13

3 years ago

1.0.12

3 years ago

1.0.9

3 years ago

1.0.8

3 years ago

1.0.10

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

0.9.7

4 years ago

1.0.0

3 years ago

0.9.6

4 years ago

0.9.5

4 years ago

1.0.7

3 years ago

1.0.6

3 years ago

1.0.5

3 years ago

1.0.4

3 years ago

1.0.3

3 years ago

0.9.4

4 years ago

0.9.3

4 years ago

0.9.2

4 years ago

0.9.1

4 years ago

0.9.0

4 years ago

0.8.20

4 years ago

0.8.19

4 years ago

0.8.18

4 years ago

0.8.17

4 years ago

0.8.16

4 years ago

0.8.15

4 years ago

0.8.14

4 years ago

0.8.13

4 years ago

0.8.12

4 years ago

0.8.11

4 years ago

0.8.10

4 years ago

0.8.8

4 years ago

0.8.7

4 years ago

0.8.6

4 years ago

0.8.5

4 years ago

0.8.4

4 years ago

0.8.3

4 years ago

0.8.2

4 years ago

0.8.1

4 years ago

0.8.0

4 years ago

0.7.0

4 years ago

0.6.5

4 years ago

0.6.4

4 years ago

0.6.3

4 years ago

0.6.1

4 years ago

0.6.0

4 years ago