25-2/24/1

This commit is contained in:
Hamza-Ayed
2025-02-24 23:38:42 +03:00
parent 218e174c87
commit 3162b1bec6
56 changed files with 1318 additions and 527 deletions

View File

@@ -167,11 +167,11 @@ class GoogleSignInHelper {
// Store driver information
box.write(BoxName.passengerID, user.id);
box.write(BoxName.email, encryptionHelper.encryptData(user.email));
box.write(BoxName.email, EncryptionHelper.instance.encryptData(user.email));
box.write(BoxName.name,
encryptionHelper.encryptData(user.displayName.toString()));
EncryptionHelper.instance.encryptData(user.displayName.toString()));
box.write(BoxName.passengerPhotoUrl,
encryptionHelper.encryptData(user.photoUrl.toString()));
EncryptionHelper.instance.encryptData(user.photoUrl.toString()));
// Perform any additional sign-up tasks or API calls here
// For example, you can send the user data to your server for registration

View File

@@ -1,5 +1,9 @@
import 'dart:convert';
import 'dart:io';
import 'package:Tripz/constant/api_key.dart';
import 'package:Tripz/controller/functions/sss.dart';
import 'package:Tripz/env/env.dart';
import 'package:http/http.dart' as http;
import 'package:Tripz/constant/info.dart';
import 'package:Tripz/controller/firebase/firbase_messge.dart';
@@ -14,11 +18,16 @@ import 'package:Tripz/constant/links.dart';
import 'package:Tripz/controller/functions/crud.dart';
import 'package:Tripz/main.dart';
import 'package:Tripz/views/home/map_page_passenger.dart';
import 'package:jwt_decoder/jwt_decoder.dart';
import 'package:location/location.dart';
import 'package:secure_string_operations/secure_string_operations.dart';
import '../../constant/char_map.dart';
import '../../constant/table_names.dart';
import '../../print.dart';
import '../functions/encrypt_decrypt.dart';
import '../functions/package_info.dart';
import '../functions/secure_storage.dart';
class LoginController extends GetxController {
final formKey = GlobalKey<FormState>();
@@ -36,6 +45,7 @@ class LoginController extends GetxController {
update();
}
var dev = '';
@override
void onInit() async {
box.read(BoxName.isTest) == null ||
@@ -75,13 +85,108 @@ class LoginController extends GetxController {
update();
}
getJwtWallet() async {
await SecurityHelper.performSecurityChecks();
String fingerPrint = await getDeviceFingerprint();
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,
);
Log.print('req: ${response1.request}');
Log.print('response: ${response1.body}');
Log.print('payload: ${payload}');
Log.print('decodedResponse1: ${jsonDecode(response1.body)}');
return jsonDecode(response1.body)['jwt'].toString();
}
getJWT() async {
print(Pasenger.pasengerpas);
await SecurityHelper.performSecurityChecks();
Log.print('firstTimeLoadKey: ${box.read(BoxName.firstTimeLoadKey)}');
dev = Platform.isAndroid ? 'android' : 'ios';
if (box.read(BoxName.firstTimeLoadKey).toString() != 'false') {
var response0 = await http.post(
Uri.parse(AppLink.loginFirstTime),
body: {
'id': box.read(BoxName.passengerID) ?? AK.newId,
'password': AK.passnpassenger,
'aud': '${AK.allowed}$dev',
},
);
if (response0.statusCode == 200) {
final decodedResponse1 = jsonDecode(response0.body);
final jwt = decodedResponse1['jwt'];
final refreshToken = decodedResponse1['refresh_token'];
box.write(BoxName.jwt, X.c(X.c(X.c(jwt, cn), cC), cs));
// Sss.write(BoxName.jwt, jwt);
await storage.write(key: BoxName.refreshToken, value: refreshToken);
await AppInitializer().getAIKey(Pasenger.keyOfApp);
await AppInitializer().getAIKey(Pasenger.initializationVector);
await Future.delayed(Duration.zero);
await EncryptionHelper.initialize();
await AppInitializer().getAIKey(Pasenger.payMobApikey);
await AppInitializer().getAIKey(Pasenger.FCM_PRIVATE_KEY);
await AppInitializer().getKey();
} else {}
} else {
await EncryptionHelper.initialize();
var payload = {
'id': box.read(BoxName.passengerID),
'password': AK.passnpassenger,
'aud': '${AK.allowed}$dev',
};
var response1 = await http.post(
Uri.parse(AppLink.loginJwtRider),
body: payload,
);
Log.print('req: ${response1.request}');
Log.print('response: ${response1.body}');
Log.print('payload: ${payload}');
Log.print('decodedResponse1: ${jsonDecode(response1.body)}');
if (response1.statusCode == 200) {
final decodedResponse1 = jsonDecode(response1.body);
Log.print('decodedResponse1: ${decodedResponse1}');
final jwt = decodedResponse1['jwt'];
await box.write(BoxName.jwt, X.c(X.c(X.c(jwt, cn), cC), cs));
await AppInitializer().getKey();
final refreshToken = decodedResponse1['refresh_token'];
await storage.write(key: BoxName.refreshToken, value: refreshToken);
} else {}
}
}
loginUsingCredentials(String passengerID, email) async {
isloading = true;
update();
bool isTokenExpired = JwtDecoder.isExpired(X
.r(X.r(X.r(box.read(BoxName.jwt), cn), cC), cs)
.toString()
.split(AppInformation.addd)[0]);
if (isTokenExpired) {
Log.print('isTokenExpired loginUsingCredentials: ${isTokenExpired}');
await getJWT();
}
var res =
await CRUD().get(link: AppLink.loginFromGooglePassenger, payload: {
'email': email.toString().contains('@')
? encryptionHelper.encryptData(email)
? EncryptionHelper.instance.encryptData(email)
: email,
'id': passengerID,
"platform": Platform.isAndroid ? 'android' : 'ios',
@@ -110,18 +215,22 @@ class LoginController extends GetxController {
box.write(BoxName.validity, d['validity']);
box.write(BoxName.isInstall, d['isInstall'] ?? 'none');
box.write(BoxName.isGiftToken, d['isGiftToken'] ?? 'none');
box.write(BoxName.firstTimeLoadKey, 'false');
d['inviteCode'] != null
? box.write(
BoxName.inviteCode,
encryptionHelper.decryptData(d['inviteCode'].toString()) ??
EncryptionHelper.instance
.decryptData(d['inviteCode'].toString()) ??
'none')
: null;
var token = await CRUD().get(link: AppLink.getTokens, payload: {
'passengerID': box.read(BoxName.passengerID).toString()
});
var fingerPrint = await getDeviceFingerprint();
await storage.write(key: BoxName.fingerPrint, value: fingerPrint);
if (token != 'failure') {
if (encryptionHelper.decryptData(
if (EncryptionHelper.instance.decryptData(
jsonDecode(token)['data'][0]['token'].toString()) !=
box.read(BoxName.tokenFCM)) {
MyDialog().getDialog('change device'.tr, 'token change'.tr,
@@ -131,20 +240,23 @@ class LoginController extends GetxController {
link: "${AppLink.server}/ride/firebase/add.php",
payload: {
'token': box.read(BoxName.tokenFCM),
'passengerID': box.read(BoxName.passengerID).toString()
'passengerID': box.read(BoxName.passengerID).toString(),
'fingerPrint': (fingerPrint).toString()
}),
CRUD().post(
link:
"${AppLink.tripzAlexandriaServer}/ride/firebase/add.php",
payload: {
'token': box.read(BoxName.tokenFCM),
'passengerID': box.read(BoxName.passengerID).toString()
'passengerID': box.read(BoxName.passengerID).toString(),
'fingerPrint': (fingerPrint).toString()
}),
CRUD().post(
link: "${AppLink.tripzGizaServer}/ride/firebase/add.php",
payload: {
'token': box.read(BoxName.tokenFCM),
'passengerID': box.read(BoxName.passengerID).toString()
'passengerID': box.read(BoxName.passengerID).toString(),
'fingerPrint': (fingerPrint).toString()
}),
];
// cameras = await availableCameras();
@@ -153,7 +265,7 @@ class LoginController extends GetxController {
.sendNotificationToDriverMAP(
'token change'.tr,
'change device'.tr,
encryptionHelper.decryptData(
EncryptionHelper.instance.decryptData(
jsonDecode(token)['data'][0]['token'].toString()),
[],
'cancel.wav',
@@ -174,9 +286,7 @@ class LoginController extends GetxController {
Get.offAll(() => const MapPagePassenger());
},
);
} else {
print('same');
}
} else {}
} // Logging to check if inviteCode is written correctly
if (d['inviteCode'] != 'none' &&
@@ -185,7 +295,7 @@ class LoginController extends GetxController {
box.read(BoxName.isInstall).toString() != '1') {
await CRUD()
.post(link: AppLink.updatePassengersInvitation, payload: {
"inviteCode": encryptionHelper
"inviteCode": EncryptionHelper.instance
.encryptData(box.read(BoxName.inviteCode).toString()),
"passengerID": box.read(BoxName.passengerID).toString(),
});
@@ -198,7 +308,7 @@ class LoginController extends GetxController {
try {
CRUD().post(link: AppLink.addPassengersPromo, payload: {
"promoCode":
'S-${encryptionHelper.decryptData(box.read(BoxName.name)).toString().split(' ')[0]}',
'S-${EncryptionHelper.instance.decryptData(box.read(BoxName.name)).toString().split(' ')[0]}',
"amount": '25',
"passengerID": box.read(BoxName.passengerID).toString(),
"description": 'promo first'
@@ -236,7 +346,7 @@ class LoginController extends GetxController {
update();
var res =
await CRUD().get(link: AppLink.loginFromGooglePassenger, payload: {
'email': encryptionHelper.encryptData(emailController.text),
'email': EncryptionHelper.instance.encryptData(emailController.text),
'id': passwordController.text
});

View File

@@ -143,7 +143,8 @@ class RegisterController extends GetxController {
var responseChecker = await CRUD().post(
link: AppLink.checkPhoneNumberISVerfiedPassenger,
payload: {
'phone_number': encryptionHelper.encryptData(phoneNumber),
'phone_number':
EncryptionHelper.instance.encryptData(phoneNumber),
'email': box.read(BoxName.email),
},
);
@@ -156,8 +157,8 @@ class RegisterController extends GetxController {
Get.snackbar('Phone number is verified before'.tr, '',
backgroundColor: AppColor.greenColor);
box.write(BoxName.isVerified, '1');
box.write(
BoxName.phone, encryptionHelper.encryptData(phoneNumber));
box.write(BoxName.phone,
EncryptionHelper.instance.encryptData(phoneNumber));
Get.offAll(const MapPagePassenger());
} else {
await sendOtp(phoneNumber, randomNumber, isEgyptianNumber,
@@ -193,18 +194,18 @@ class RegisterController extends GetxController {
// Trim any leading or trailing whitespace from the phone number
phoneNumber = phoneNumber.trim();
var dd = await CRUD().post(link: AppLink.sendVerifyOtpMessage, payload: {
'phone_number': encryptionHelper.encryptData(phoneNumber),
'token': encryptionHelper.encryptData(otp.toString()),
'phone_number': EncryptionHelper.instance.encryptData(phoneNumber),
'token': EncryptionHelper.instance.encryptData(otp.toString()),
});
Log.print('dd: ${dd}');
if (isEgyptian) {
await CRUD().post(link: AppLink.updatePhoneInvalidSMSPassenger, payload: {
"phone_number": encryptionHelper
"phone_number": EncryptionHelper.instance
.encryptData(Get.find<RegisterController>().phoneController.text)
});
box.write(
BoxName.phone, encryptionHelper.encryptData(phoneController.text));
var nameParts = encryptionHelper
box.write(BoxName.phone,
EncryptionHelper.instance.encryptData(phoneController.text));
var nameParts = EncryptionHelper.instance
.decryptData(box.read(BoxName.name))
.toString()
.split(' ');
@@ -213,14 +214,14 @@ class RegisterController extends GetxController {
var payload = {
'id': box.read(BoxName.passengerID),
'phone': encryptionHelper.encryptData(phoneController.text),
'phone': EncryptionHelper.instance.encryptData(phoneController.text),
'email': box.read(BoxName.email),
'password': encryptionHelper.encryptData('unknown'),
'gender': encryptionHelper.encryptData('unknown'),
'birthdate': encryptionHelper.encryptData('2002-01-01'),
'password': EncryptionHelper.instance.encryptData('unknown'),
'gender': EncryptionHelper.instance.encryptData('unknown'),
'birthdate': EncryptionHelper.instance.encryptData('2002-01-01'),
'site': box.read(BoxName.passengerPhotoUrl) ?? 'unknown',
'first_name': encryptionHelper.encryptData(firstName),
'last_name': encryptionHelper.encryptData(lastName),
'first_name': EncryptionHelper.instance.encryptData(firstName),
'last_name': EncryptionHelper.instance.encryptData(lastName),
};
var res1 = await CRUD().post(
@@ -245,8 +246,8 @@ class RegisterController extends GetxController {
box.write(BoxName.isVerified, '1');
box.write(BoxName.isFirstTime, '0');
box.write(
BoxName.phone, encryptionHelper.encryptData(phoneController.text));
box.write(BoxName.phone,
EncryptionHelper.instance.encryptData(phoneController.text));
Get.put(LoginController()).loginUsingCredentials(
box.read(BoxName.passengerID).toString(),
@@ -257,8 +258,8 @@ class RegisterController extends GetxController {
} else if (phoneController.text.toString().length >= 10) {
box.write(BoxName.isVerified, '1');
box.write(BoxName.isFirstTime, '0'); //todo check if first or not
box.write(
BoxName.phone, encryptionHelper.encryptData(phoneController.text));
box.write(BoxName.phone,
EncryptionHelper.instance.encryptData(phoneController.text));
Get.put(LoginController()).loginUsingCredentials(
box.read(BoxName.passengerID).toString(),
@@ -279,14 +280,16 @@ class RegisterController extends GetxController {
try {
if (formKey3.currentState!.validate()) {
var res = await CRUD().post(link: AppLink.verifyOtpMessage, payload: {
'phone_number': encryptionHelper.encryptData(phoneController.text),
'token': encryptionHelper.encryptData(verifyCode.text.toString()),
'phone_number':
EncryptionHelper.instance.encryptData(phoneController.text),
'token':
EncryptionHelper.instance.encryptData(verifyCode.text.toString()),
});
if (res != 'failure') {
box.write(BoxName.phone,
encryptionHelper.encryptData(phoneController.text));
var nameParts = encryptionHelper
EncryptionHelper.instance.encryptData(phoneController.text));
var nameParts = EncryptionHelper.instance
.decryptData(box.read(BoxName.name))
.toString()
.split(' ');
@@ -295,7 +298,8 @@ class RegisterController extends GetxController {
var payload = {
'id': box.read(BoxName.passengerID),
'phone': encryptionHelper.decryptData(phoneController.text),
'phone':
EncryptionHelper.instance.decryptData(phoneController.text),
'email': box.read(BoxName.email),
'password': 'unknown',
'gender': 'unknown',
@@ -328,7 +332,7 @@ class RegisterController extends GetxController {
box.write(BoxName.isVerified, '1');
box.write(BoxName.isFirstTime, '0');
box.write(BoxName.phone,
encryptionHelper.decryptData(phoneController.text));
EncryptionHelper.instance.decryptData(phoneController.text));
Get.put(LoginController()).loginUsingCredentials(
box.read(BoxName.passengerID).toString(),

View File

@@ -23,8 +23,8 @@ class TokenController extends GetxController {
'Basic ${base64Encode(utf8.encode(basicAuthCredentials.toString()))}',
},
body: {
'token':
encryptionHelper.decryptData(box.read(BoxName.tokenFCM.toString())),
'token': EncryptionHelper.instance
.decryptData(box.read(BoxName.tokenFCM.toString())),
'passengerID': box.read(BoxName.passengerID).toString()
},
);