25-12-1/1
This commit is contained in:
@@ -87,34 +87,70 @@ class LoginController extends GetxController {
|
||||
update();
|
||||
}
|
||||
|
||||
getJwtWallet() async {
|
||||
final random = Random();
|
||||
Future<String> getJwtWallet() async {
|
||||
try {
|
||||
final random = Random();
|
||||
|
||||
if (random.nextBool()) {
|
||||
await SecurityHelper.performSecurityChecks();
|
||||
} else {
|
||||
await SecurityChecks.isDeviceRootedFromNative(Get.context!);
|
||||
// Perform security check randomly
|
||||
if (random.nextBool()) {
|
||||
await SecurityHelper.performSecurityChecks();
|
||||
} else {
|
||||
await SecurityChecks.isDeviceRootedFromNative(Get.context!);
|
||||
}
|
||||
|
||||
String fingerPrint = await DeviceHelper.getDeviceFingerprint();
|
||||
final dev = GetPlatform.isAndroid ? 'android' : 'ios';
|
||||
|
||||
var payload = {
|
||||
'id': box.read(BoxName.passengerID),
|
||||
'password': AK.passnpassenger,
|
||||
'aud': '${AK.allowed}$dev',
|
||||
'fingerPrint': fingerPrint,
|
||||
};
|
||||
|
||||
var response = await http.post(
|
||||
Uri.parse(AppLink.loginJwtWalletRider),
|
||||
body: payload,
|
||||
);
|
||||
|
||||
// Handle bad responses
|
||||
if (response.statusCode != 200) {
|
||||
_showJwtErrorDialog(
|
||||
"حدث خطأ أثناء الاتصال بالخادم. يرجى المحاولة مرة أخرى.");
|
||||
throw Exception("JWT request failed");
|
||||
}
|
||||
|
||||
var data = jsonDecode(response.body);
|
||||
|
||||
// Validate JWT response structure
|
||||
if (!data.containsKey('jwt') || !data.containsKey('hmac')) {
|
||||
_showJwtErrorDialog("تعذّر التحقق من الأمان. يرجى إعادة المحاولة.");
|
||||
throw Exception("Invalid JWT response format");
|
||||
}
|
||||
|
||||
// Save HMAC locally
|
||||
await box.write(BoxName.hmac, data['hmac']);
|
||||
|
||||
return data['jwt'].toString();
|
||||
} catch (e) {
|
||||
_showJwtErrorDialog("حدث خلل غير متوقع. يرجى المحاولة مرة أخرى.");
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
|
||||
String fingerPrint = await DeviceHelper.getDeviceFingerprint();
|
||||
// print('fingerPrint: ${fingerPrint}');
|
||||
dev = Platform.isAndroid ? 'android' : 'ios';
|
||||
var payload = {
|
||||
'id': box.read(BoxName.passengerID),
|
||||
'password': AK.passnpassenger,
|
||||
'aud': '${AK.allowed}$dev',
|
||||
'fingerPrint': fingerPrint
|
||||
};
|
||||
var response1 = await http.post(
|
||||
Uri.parse(AppLink.loginJwtWalletRider),
|
||||
body: payload,
|
||||
void _showJwtErrorDialog(String message) {
|
||||
if (Get.context == null) return;
|
||||
|
||||
Get.defaultDialog(
|
||||
title: "خطأ في الاتصال",
|
||||
middleText: message,
|
||||
textConfirm: "إعادة المحاولة",
|
||||
confirmTextColor: Colors.white,
|
||||
onConfirm: () {
|
||||
Get.back();
|
||||
getJwtWallet();
|
||||
},
|
||||
);
|
||||
await box.write(BoxName.hmac, jsonDecode(response1.body)['hmac']);
|
||||
// Log.print('jsonDecoeded[hmac]: ${jsonDecoeded['hmac']}');
|
||||
// Log.print('req: ${response1.request}');
|
||||
// Log.print('response: ${response1.body}');
|
||||
// Log.print('payload: ${payload}');
|
||||
return jsonDecode(response1.body)['jwt'].toString();
|
||||
}
|
||||
|
||||
getJWT() async {
|
||||
|
||||
Reference in New Issue
Block a user