iOS Customer User APIs
Customer user APIs for account signup, login/logout, and account recovery. Access these APIs through vipaso.user.customer
.
Authentication
Login
Authenticate an existing customer with phone number and password:
let request = LoginRequest(identifier: phoneNumber, password: password)
vipaso.user.customer.login(request: request) { result in
switch result {
case .success:
// User successfully logged in
// Authentication state change will be sent via delegate
case .failure(let error):
// Handle login error
print("Login failed: \(error.localizedDescription)")
}
}
Logout
Log out the current customer:
vipaso.user.customer.logout()
// Authentication state change will be sent via delegate
Account Signup
The signup process requires three steps: starting the flow, verifying the phone number, and completing the signup.
1. Start Signup Flow
Begin the signup process with a phone number. This sends an OTP code to the provided number:
let request = StartSignupRequest(phoneNumber: phoneNumber)
vipaso.user.customer.startSignupFlow(request: request) { result in
switch result {
case .success(let response):
// Save the flowID for the next step
let flowID = response.flowID
case .failure(let error):
print("Signup start failed: \(error.localizedDescription)")
}
}
2. Verify Phone Number
Verify the phone number using the OTP code received via SMS:
let request = VerifyPhoneNumberRequest(flowID: flowID, otp: otp)
vipaso.user.customer.verifyPhoneNumber(request: request) { result in
switch result {
case .success(let response):
// Phone number verified, save flowID for final step
let verifiedFlowID = response.flowID
case .failure(let error):
print("Phone verification failed: \(error.localizedDescription)")
}
}
3. Complete Signup
Finish the signup by providing user details:
let request = FinishSignupRequest(
flowID: flowID,
password: password,
email: email,
firstName: firstName,
lastName: lastName,
phoneNumber: phoneNumber
)
vipaso.user.customer.finishSignupFlow(request: request) { result in
switch result {
case .success(let response):
// Signup completed successfully
// User is now logged in, authentication state change sent via delegate
case .failure(let error):
print("Signup completion failed: \(error.localizedDescription)")
}
}
Password Recovery
The password recovery process has three steps: starting recovery, sending OTP, and completing the password change.
1. Start Recovery Flow
Begin password recovery with the customer's phone number:
let request = StartRecoveryRequest(phoneNumber: phoneNumber)
vipaso.user.customer.startRecoveryFlow(request: request) { result in
switch result {
case .success(let response):
// Save the flowID for the next step
let flowID = response.flowID
case .failure(let error):
print("Recovery start failed: \(error.localizedDescription)")
}
}
2. Send Recovery OTP
Submit the OTP code received via SMS:
let request = RecoveryOTPRequest(code: otp, flowID: flowID)
vipaso.user.customer.sendRecoveryOTP(request: request) { result in
switch result {
case .success(let response):
// Save both settingsFlowID and sessionToken for final step
let settingsFlowID = response.settingsFlowID
let sessionToken = response.sessionToken
case .failure(let error):
print("OTP verification failed: \(error.localizedDescription)")
}
}
3. Complete Password Recovery
Set the new password using the settings flow ID and session token:
let request = FinishRecoveryRequest(
settingsFlowID: settingsFlowID,
sessionToken: sessionToken,
password: newPassword
)
vipaso.user.customer.finishRecoveryFlow(request: request) { result in
switch result {
case .success(let response):
// Password successfully updated
case .failure(let error):
print("Password recovery failed: \(error.localizedDescription)")
}
}
User Data
Fetch User Details
Get the current customer's profile information:
vipaso.user.customer.fetchUser { result in
switch result {
case .success(let response):
let user = response.user
// Access user.id, user.phone, user.firstName, etc.
case .failure(let error):
print("Fetch user failed: \(error.localizedDescription)")
}
}