From 2da78ccd8e29540e5282dba73a41e3d9976fccfb Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Sun, 28 Jun 2026 19:52:45 +0300 Subject: [PATCH] Update: 2026-06-28 19:52:45 --- backend/auth/Tester/create_tester_driver.php | 89 +++++++++++++ ...otlin-compiler-12178232079035139137.salive | 0 siro_rider/ios/Podfile.lock | 14 +- .../auth/apple_signin_controller.dart | 37 ------ .../controller/functions/package_info.dart | 125 ------------------ siro_rider/pubspec.lock | 20 +-- siro_rider/pubspec.yaml | 5 +- 7 files changed, 98 insertions(+), 192 deletions(-) create mode 100644 backend/auth/Tester/create_tester_driver.php delete mode 100644 siro_rider/android/.kotlin/sessions/kotlin-compiler-12178232079035139137.salive delete mode 100644 siro_rider/lib/controller/auth/apple_signin_controller.dart diff --git a/backend/auth/Tester/create_tester_driver.php b/backend/auth/Tester/create_tester_driver.php new file mode 100644 index 00000000..50a5b00b --- /dev/null +++ b/backend/auth/Tester/create_tester_driver.php @@ -0,0 +1,89 @@ +encryptData($email); +$encryptedPhone = $encryptionHelper->encryptData($phone); +$encryptedFirstName = $encryptionHelper->encryptData('Driver'); +$encryptedLastName = $encryptionHelper->encryptData('Tester'); +$encryptedGender = $encryptionHelper->encryptData('Male'); +$encryptedBirthdate = $encryptionHelper->encryptData('1990-01-01'); +$encryptedSite = $encryptionHelper->encryptData('Jordan'); + +try { + $con = Database::get('main'); + + // 1. Check if driver exists + $stmt = $con->prepare("SELECT id FROM driver WHERE email = :email LIMIT 1"); + $stmt->bindParam(':email', $encryptedEmail); + $stmt->execute(); + $driver = $stmt->fetch(PDO::FETCH_ASSOC); + + if ($driver) { + $driverId = $driver['id']; + $update = $con->prepare("UPDATE driver SET password = :password, phone = :phone WHERE id = :id"); + $update->bindParam(':password', $hashedPassword); + $update->bindParam(':phone', $encryptedPhone); + $update->bindParam(':id', $driverId); + $update->execute(); + echo "Driver tester updated successfully.\n"; + } else { + $driverId = bin2hex(random_bytes(10)); // 20 chars unique id + $insert = $con->prepare("INSERT INTO driver (id, phone, email, password, gender, birthdate, site, first_name, last_name) + VALUES (:id, :phone, :email, :password, :gender, :birthdate, :site, :first_name, :last_name)"); + $insert->bindParam(':id', $driverId); + $insert->bindParam(':phone', $encryptedPhone); + $insert->bindParam(':email', $encryptedEmail); + $insert->bindParam(':password', $hashedPassword); + $insert->bindParam(':gender', $encryptedGender); + $insert->bindParam(':birthdate', $encryptedBirthdate); + $insert->bindParam(':site', $encryptedSite); + $insert->bindParam(':first_name', $encryptedFirstName); + $insert->bindParam(':last_name', $encryptedLastName); + $insert->execute(); + echo "Driver tester created successfully with ID: $driverId\n"; + } + + // 2. Ensure phone_verification row exists + $stmtPhone = $con->prepare("SELECT * FROM phone_verification WHERE phone_number = :phone LIMIT 1"); + $stmtPhone->bindParam(':phone', $encryptedPhone); + $stmtPhone->execute(); + if ($stmtPhone->fetch()) { + $updatePhone = $con->prepare("UPDATE phone_verification SET is_verified = 1 WHERE phone_number = :phone"); + $updatePhone->bindParam(':phone', $encryptedPhone); + $updatePhone->execute(); + } else { + $insertPhone = $con->prepare("INSERT INTO phone_verification (phone_number, is_verified) VALUES (:phone, 1)"); + $insertPhone->bindParam(':phone', $encryptedPhone); + $insertPhone->execute(); + } + + // 3. Ensure CarRegistration row exists + $stmtCar = $con->prepare("SELECT * FROM CarRegistration WHERE driverID = :driverID LIMIT 1"); + $stmtCar->bindParam(':driverID', $driverId); + $stmtCar->execute(); + if ($stmtCar->fetch()) { + $updateCar = $con->prepare("UPDATE CarRegistration SET make = 'Toyota', model = 'Prius', year = '2020' WHERE driverID = :driverID"); + $updateCar->bindParam(':driverID', $driverId); + $updateCar->execute(); + } else { + $insertCar = $con->prepare("INSERT INTO CarRegistration (driverID, make, model, year) VALUES (:driverID, 'Toyota', 'Prius', '2020')"); + $insertCar->bindParam(':driverID', $driverId); + $insertCar->execute(); + } + + echo "Verification and Car Registration configured.\n"; + +} catch (Exception $e) { + echo "Error: " . $e->getMessage() . "\n"; +} +?> diff --git a/siro_rider/android/.kotlin/sessions/kotlin-compiler-12178232079035139137.salive b/siro_rider/android/.kotlin/sessions/kotlin-compiler-12178232079035139137.salive deleted file mode 100644 index e69de29b..00000000 diff --git a/siro_rider/ios/Podfile.lock b/siro_rider/ios/Podfile.lock index 8fcd9377..6ba35cd6 100644 --- a/siro_rider/ios/Podfile.lock +++ b/siro_rider/ios/Podfile.lock @@ -104,16 +104,12 @@ PODS: - GoogleUtilities/UserDefaults (8.1.1): - GoogleUtilities/Logger - GoogleUtilities/Privacy - - GTMSessionFetcher/Core (3.5.0) + - GTMSessionFetcher/Core (5.3.0) - image_cropper (0.0.4): - Flutter - TOCropViewController (~> 2.8.0) - image_picker_ios (0.0.1): - Flutter - - IOSSecuritySuite (1.9.11) - - jailbreak_root_detection (1.0.1): - - Flutter - - IOSSecuritySuite (~> 1.9.10) - just_audio (0.0.1): - Flutter - FlutterMacOS @@ -185,7 +181,6 @@ DEPENDENCIES: - geolocator_apple (from `.symlinks/plugins/geolocator_apple/darwin`) - image_cropper (from `.symlinks/plugins/image_cropper/ios`) - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) - - jailbreak_root_detection (from `.symlinks/plugins/jailbreak_root_detection/ios`) - just_audio (from `.symlinks/plugins/just_audio/darwin`) - live_activities (from `.symlinks/plugins/live_activities/ios`) - local_auth_darwin (from `.symlinks/plugins/local_auth_darwin/darwin`) @@ -219,7 +214,6 @@ SPEC REPOS: - GoogleDataTransport - GoogleUtilities - GTMSessionFetcher - - IOSSecuritySuite - MapLibre - nanopb - PromisesObjC @@ -262,8 +256,6 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/image_cropper/ios" image_picker_ios: :path: ".symlinks/plugins/image_picker_ios/ios" - jailbreak_root_detection: - :path: ".symlinks/plugins/jailbreak_root_detection/ios" just_audio: :path: ".symlinks/plugins/just_audio/darwin" live_activities: @@ -328,11 +320,9 @@ SPEC CHECKSUMS: geolocator_apple: ab36aa0e8b7d7a2d7639b3b4e48308394e8cef5e GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7 GoogleUtilities: 4f2618a4a1e762a1ee134a1e2323bba9843e06da - GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6 + GTMSessionFetcher: 127211aeec0b1e904fc49f4f6f895dcc535b0ecf image_cropper: 64567491beea6cd1bc4b11948e2babb590de5826 image_picker_ios: e0ece4aa2a75771a7de3fa735d26d90817041326 - IOSSecuritySuite: b51056d5411aee567153ca86ce7f6edfdc5d2654 - jailbreak_root_detection: 9201e1dfd51dc23069cbfb8d4f4a2d18305170bf just_audio: 4e391f57b79cad2b0674030a00453ca5ce817eed live_activities: 4dfa736d0736e1c77866a2f9c056a76513cc9e7b local_auth_darwin: c3ee6cce0a8d56be34c8ccb66ba31f7f180aaebb diff --git a/siro_rider/lib/controller/auth/apple_signin_controller.dart b/siro_rider/lib/controller/auth/apple_signin_controller.dart deleted file mode 100644 index 615b0979..00000000 --- a/siro_rider/lib/controller/auth/apple_signin_controller.dart +++ /dev/null @@ -1,37 +0,0 @@ -import 'package:firebase_auth/firebase_auth.dart'; -import 'package:get/get.dart'; -import 'package:sign_in_with_apple/sign_in_with_apple.dart'; - -class AuthController extends GetxController { - final FirebaseAuth _auth = FirebaseAuth.instance; - - Future signInWithApple() async { - try { - final appleCredential = await SignInWithApple.getAppleIDCredential( - scopes: [ - AppleIDAuthorizationScopes.email, - AppleIDAuthorizationScopes.fullName, - ], - ); - - final oAuthProvider = OAuthProvider('apple.com'); - final credential = oAuthProvider.credential( - idToken: appleCredential.identityToken, - accessToken: appleCredential.authorizationCode, - ); - - UserCredential userCredential = - await _auth.signInWithCredential(credential); - - return userCredential.user; - } catch (error) { - return null; - } - } - - Future signOut() async { - try { - await _auth.signOut(); - } catch (error) {} - } -} diff --git a/siro_rider/lib/controller/functions/package_info.dart b/siro_rider/lib/controller/functions/package_info.dart index 8062c60c..81db1446 100644 --- a/siro_rider/lib/controller/functions/package_info.dart +++ b/siro_rider/lib/controller/functions/package_info.dart @@ -7,7 +7,6 @@ import 'package:device_info_plus/device_info_plus.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; -import 'package:jailbreak_root_detection/jailbreak_root_detection.dart'; import 'package:package_info_plus/package_info_plus.dart'; import 'package:url_launcher/url_launcher.dart'; import '../../constant/box_name.dart'; @@ -188,130 +187,6 @@ void showUpdateDialog(BuildContext context) { ); } -class SecurityHelper { - /// Performs security checks and handles potential risks - static Future performSecurityChecks() async { - bool isNotTrust = false; - bool isJailBroken = false; - bool isRealDevice = true; - bool isOnExternalStorage = false; - bool checkForIssues = false; - bool isDevMode = false; - bool isTampered = false; - String bundleId = ""; - - try { - isNotTrust = await JailbreakRootDetection.instance.isNotTrust; - isJailBroken = await JailbreakRootDetection.instance.isJailBroken; - isRealDevice = await JailbreakRootDetection.instance.isRealDevice; - isOnExternalStorage = - await JailbreakRootDetection.instance.isOnExternalStorage; - - List issues = - await JailbreakRootDetection.instance.checkForIssues; - checkForIssues = issues.isNotEmpty; - - isDevMode = await JailbreakRootDetection.instance.isDevMode; - - // Get Bundle ID - PackageInfo packageInfo = await PackageInfo.fromPlatform(); - bundleId = packageInfo.packageName; - if (bundleId.isNotEmpty) { - // Pass the CORRECT bundle ID to isTampered - isTampered = await JailbreakRootDetection.instance.isTampered(bundleId); - } - } catch (e) { - debugPrint("Error during security checks: $e"); - // Consider handling specific exceptions, not just general errors. - } - - // Save values to storage (using GetStorage) - await box.write('isNotTrust', isNotTrust); // Use await for write operations - await box.write('isTampered', isTampered); // Use await - await box.write('isJailBroken', isJailBroken); // Use await - - debugPrint("Security Check Results:"); - debugPrint("isNotTrust: $isNotTrust"); - debugPrint("isJailBroken: $isJailBroken"); - debugPrint("isRealDevice: $isRealDevice"); - debugPrint("isOnExternalStorage: $isOnExternalStorage"); - debugPrint("checkForIssues: $checkForIssues"); - debugPrint("isDevMode: $isDevMode"); - debugPrint("isTampered: $isTampered"); - debugPrint("Bundle ID: $bundleId"); //Log.print the bundle ID - - // Check for security risks and potentially show a warning - if (isJailBroken || isRealDevice == false || isTampered) { - // Log.print("security_warning".tr); //using easy_localization - // Use a more robust approach to show a warning, like a dialog: - _showSecurityWarning(); - } else { - box.write(BoxName.security_check, 'passed'); - Log.print('Security checks passed successfully.'); - } - } - - /// Deletes all app data - static void _showSecurityWarning() { - // Use an RxInt to track the remaining seconds. This is the KEY! - final secondsRemaining = RxInt(10); - - Get.dialog( - CupertinoAlertDialog( - title: Text("Security Warning".tr), - content: Column( - mainAxisSize: MainAxisSize.min, - children: [ - Obx(() => Text( - "Potential security risks detected. The application will close in @seconds seconds." - .trParams({ - // Use trParams for placeholders - 'seconds': secondsRemaining.value.toString(), - }), - // Wrap the Text widget in Obx - )), - SizedBox(height: 24), // More spacing before the progress bar - Obx(() => SizedBox( - width: double.infinity, // Make progress bar full width - child: CupertinoActivityIndicator( - // in case of loading - radius: 15, - animating: true, - ))), - SizedBox(height: 8), - Obx(() => ClipRRect( - borderRadius: BorderRadius.circular(8), // Rounded corners - child: LinearProgressIndicator( - value: secondsRemaining.value / 10, - backgroundColor: Colors.grey.shade300, // Lighter background - valueColor: AlwaysStoppedAnimation( - CupertinoColors.systemRed), // iOS-style red - minHeight: 8, // Slightly thicker progress bar - ), - )), - ], - ), - ), - barrierDismissible: false, - ); - - Timer.periodic(Duration(seconds: 1), (timer) { - secondsRemaining.value--; - if (secondsRemaining.value <= 0) { - timer.cancel(); - // Get.back(); - _clearDataAndExit(); - } - }); - } - - static Future _clearDataAndExit() async { - await storage.deleteAll(); - await box.erase(); - exit(0); // Exit the app - Log.print('exit'); - } -} class DeviceHelper { static Future getDeviceFingerprint() async { diff --git a/siro_rider/pubspec.lock b/siro_rider/pubspec.lock index f30277dd..4428cf03 100644 --- a/siro_rider/pubspec.lock +++ b/siro_rider/pubspec.lock @@ -1085,14 +1085,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.5" - jailbreak_root_detection: - dependency: "direct main" - description: - name: jailbreak_root_detection - sha256: "5000177b9a27428e9c47d2b98f21ab707bef5869c036f9bda4f4f95f4ad67d72" - url: "https://pub.dev" - source: hosted - version: "1.2.0+1" jni: dependency: transitive description: @@ -1305,10 +1297,10 @@ packages: dependency: transitive description: name: matcher - sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861 + sha256: "12956d0ad8390bbcc63ca2e1469c0619946ccb52809807067a7020d57e647aa6" url: "https://pub.dev" source: hosted - version: "0.12.19" + version: "0.12.18" material_color_utilities: dependency: transitive description: @@ -1321,10 +1313,10 @@ packages: dependency: transitive description: name: meta - sha256: "1741988757a65eb6b36abe716829688cf01910bbf91c34354ff7ec1c3de2b349" + sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394" url: "https://pub.dev" source: hosted - version: "1.18.0" + version: "1.17.0" mime: dependency: "direct main" description: @@ -1909,10 +1901,10 @@ packages: dependency: transitive description: name: test_api - sha256: "949a932224383300f01be9221c39180316445ecb8e7547f70a41a35bf421fb9e" + sha256: "93167629bfc610f71560ab9312acdda4959de4df6fac7492c89ff0d3886f6636" url: "https://pub.dev" source: hosted - version: "0.7.11" + version: "0.7.9" timezone: dependency: transitive description: diff --git a/siro_rider/pubspec.yaml b/siro_rider/pubspec.yaml index e5a05cb6..13e24add 100644 --- a/siro_rider/pubspec.yaml +++ b/siro_rider/pubspec.yaml @@ -2,7 +2,7 @@ name: siro_rider description: "A new Flutter project." publish_to: "none" # Remove this line if you wish to publish to pub.dev -version: 1.0.0+2 +version: 1.0.0+3 environment: sdk: ">=3.0.5 <4.0.0" @@ -58,8 +58,6 @@ dependencies: webview_flutter_android: ^3.16.2 webview_flutter_wkwebview: ^3.14.0 just_audio: ^0.10.5 - # share: ^2.0.4 - sign_in_with_apple: ^7.0.1 firebase_auth: ^6.1.4 device_info_plus: 12.3.0 # uni_links: ^0.5.1 @@ -72,7 +70,6 @@ dependencies: live_activities: ^2.4.7 quick_actions: ^1.1.0 jwt_decoder: ^2.0.1 - jailbreak_root_detection: ^1.2.0+1 share_plus: ^12.0.1 dotted_line: ^3.2.3 shimmer: ^3.0.0