verifyOtp function
Implementation
Future<void> verifyOtp(
String otp, String accessToken, BuildContext context) async {
Dio dio = Dio();
final String authUrl = Configuration.AuthUrl;
final String url = '$authUrl/otpverify';
try {
final response = await dio.post(
url,
data: {
'otp': otp, // OTP provided by the user
},
options: Options(
headers: {
'Authorization':
'Bearer $accessToken', // Include Bearer token in the header
},
),
);
if (response.statusCode == 200) {
final FlutterSecureStorage secureStorage = FlutterSecureStorage();
await secureStorage.delete(key: "opt_access_token");
print('Response from backend: ${response.data}');
final responseData = AuthResponseModel.fromJson(response.data);
print('ErrorDetails: ${responseData.errorDetails}');
print('Username: ${responseData.username}');
print('idpname: ${responseData.idpname_backend}');
print('Entities: ${responseData.entities}');
print('Entities Length: ${responseData.entities.length}');
if (responseData.entities.length == 1) {
final entityDta = responseData.entities[0];
print('Single Entity tenant: ${entityDta.tenant}');
print('Single Entity refreshtoken: ${entityDta.refreshToken}');
String jsonString = jsonEncode(response.data);
await secureStorage.write(key: "Entities_List", value: jsonString);
await secureStorage.write(key: "idpname_backend", value: responseData.idpname_backend);
String? deviceId = await secureStorage.read(key: "DeviceId");
GmailSSO.getJwtFromBackend(responseData.username,responseData.idpname_backend, entityDta.tenant,
entityDta.refreshToken, deviceId ?? '', context);
} else {
print('Multiple Entities');
String jsonString = jsonEncode(response.data);
await secureStorage.write(key: "Entities_List", value: jsonString);
await secureStorage.delete(key: "JWT_Token");
await secureStorage.write(key: "idpname_backend", value: responseData.idpname_backend);
context.goNamed('/');
}
} else {
throw response.data['message'] ?? 'Error during OTP verification';
}
} on DioException catch (e) {
String errorMessage = 'Error during OTP verification';
if (e.response != null && e.response?.data != null) {
errorMessage = e.response?.data['message'] ?? errorMessage;
}
throw errorMessage; // Throw only the error message
} catch (e) { // Catch any other unknown errors
print('Error during OTP verification: $e');
throw Exception('Error during OTP verification');
}
}