User Management
AIR Kit provides user management capabilities that allow you to retrieve user information, manage multi-factor authentication (MFA), and handle smart account operations.
User Information
getUserInfo()
Retrieves detailed information about the currently logged-in user.
Method Signature:
tsx
public async getUserInfo(): Promise<AirUserDetails>
Returns:
tsx
{
partnerId: string;
partnerUserId: string;
airId?: AirIdDetails;
user: {
id: string;
abstractAccountAddress?: string;
email?: string;
isMFASetup: boolean;
};
}
Requirements:
- User must be logged in
Example:
tsx
try {
const userInfo = await airService.getUserInfo();
} catch (error) {
console.error("Failed to get user info:", error);
// Handle error appropriately
}
Multi-Factor Authentication (MFA)
setupOrUpdateMfa()
Sets up or updates multi-factor authentication for the user's account. This method guides the user through the MFA setup process using passkeys.
Method Signature:
tsx
public async setupOrUpdateMfa(): Promise<void>
What happens during MFA setup:
- The method ensures the wallet is initialized
- Opens the MFA setup flow and guides the user through passkey creation/verification
- Updates the user's MFA status in the system, including
loginResult
to reflect the new MFA status
Requirements:
- User must be logged in
Important Notes:
- MFA is generally required: If your dApp doesn't trigger
setupOrUpdateMfa()
after login and the user hasn't set up MFA, it will be triggered automatically with any wallet related request, requiring the user to complete setup before the request can be processed - Currently only passkey is supported as the MFA method
- Only MFA setup is currently implemented, not updates: It's recommended to check if the user has already set up MFA before calling this method to avoid unnecessary prompts
- Abstract Account Address availability: The abstract account address will only be returned in user info and token if MFA is set up
MFA Setup Integration
Since MFA is generally required, you can either:
Option 1: Proactive Setup (Recommended)
tsx
try {
const userInfo = await airService.getUserInfo();
if (!userInfo.user.isMFASetup) {
await airService.setupOrUpdateMfa();
// Abstract account address will now be available
}
} catch (error) {
// Handle error appropriately
}
Option 2: Let AIR Kit Handle Automatically Simply proceed with wallet operations - MFA will be prompted automatically if required.