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 provider
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
})>
Navigation mode
Show navigation panel
passport.showNavigation({bottom: 5px, right: 5px}); // Bottom right corner
Hide navigation panel
passport.hideNavigation();
UI mode
Open UI
passport.openUI() // defaults to Credenza.pages.PROFILE
Close UI
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})
})