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 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
passport.close()
Events
Generic Format Of Handling Triggers
const unsubscribe = passport.on(Passport.events[eventName], (data) => {
console.log(data)
})
Triggers when user logs in
passport.on('LOGIN', async (data) => {
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.on('LOGOUT', async (data) => {
console.log('User is logged out with passport')
})
Triggers when a payment is completed
passport.on('PAYMENT', async (data) => {
console.log('Payment', {type, data})
})
Triggers when passport throws an exception
passport.on('ERROR', async (error) => {
console.log('Passport error', {provider, error})
})
Last updated