Modes
Passport can be used in 3 modes: Code, Navigation, and UI.
Code Mode
Login
const params = ['metamask'] || ['magicLink', {email:string}] || ['magicSms', {phone: string}]a
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 // returns Ethers providerCheck 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
})>Navigation mode
Show navigation panel
passport.showNavigation({bottom: 5px, right: 5px}); // Bottom right cornerHide navigation panel
passport.hideNavigation();UI mode
Open UI
passport.openUI() // defaults to Credenza.pages.PROFILEClose UI
passport.close()Events
Triggers when user logs in
passport.onLogin(({provider, opts}) => {
  console.log('User is logged in with passport', {provider, opts})
})Triggers when a user updates profile (extended registration also uses this event)
passport.onUpdateProfile((user) => {
  console.log('User profile updated: ', user)
})Triggers when a user 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 passport throws an exception
passport.onError(({provider, error}) => {
  console.log('Passport error', {provider, error})
})Last updated
