diff --git a/backend/auth/otp/verify.php b/backend/auth/otp/verify.php index 524d578a..63992771 100644 --- a/backend/auth/otp/verify.php +++ b/backend/auth/otp/verify.php @@ -198,7 +198,11 @@ try { // Generate JWT tokens for driver $audDriver = filterRequest("aud") ?: filterRequest("audience") ?: (getenv('allowedDriver2') ?: 'driver-app:ios'); - $fpDriver = filterRequest("fingerprint") ?? filterRequest("fingerPrint"); + $fpDriver = filterRequest("fingerprint") ?? filterRequest("fingerPrint") ?? ($_SERVER['HTTP_X_DEVICE_FP'] ?? null); + if ($fpDriver === null && function_exists('getallheaders')) { + $hdrs = array_change_key_case(getallheaders(), CASE_LOWER); + $fpDriver = $hdrs['x-device-fp'] ?? null; + } $jwtSvc = new JwtService($redis); $accessToken = $jwtSvc->generateAccessToken($driverID, 'driver', $audDriver, $fpDriver); $refreshToken = $jwtSvc->generateRefreshToken($driverID, 'driver', $audDriver); @@ -287,7 +291,11 @@ try { // Generate JWT tokens for passenger $audPass = filterRequest("aud") ?: filterRequest("audience") ?: (getenv('allowed2') ?: 'passenger-app:ios'); - $fpPass = filterRequest("fingerprint") ?? filterRequest("fingerPrint"); + $fpPass = filterRequest("fingerprint") ?? filterRequest("fingerPrint") ?? ($_SERVER['HTTP_X_DEVICE_FP'] ?? null); + if ($fpPass === null && function_exists('getallheaders')) { + $hdrs = array_change_key_case(getallheaders(), CASE_LOWER); + $fpPass = $hdrs['x-device-fp'] ?? null; + } $jwtSvc = new JwtService($redis); $accessToken = $jwtSvc->generateAccessToken($passengerID, 'passenger', $audPass, $fpPass); $refreshToken = $jwtSvc->generateRefreshToken($passengerID, 'passenger', $audPass); diff --git a/siro_rider/lib/controller/auth/otp_controller.dart b/siro_rider/lib/controller/auth/otp_controller.dart index ac84b6ce..eaf22d77 100644 --- a/siro_rider/lib/controller/auth/otp_controller.dart +++ b/siro_rider/lib/controller/auth/otp_controller.dart @@ -65,13 +65,15 @@ class PhoneAuthHelper { static Future verifyOtp(String phoneNumber, String otpCode) async { try { final fixedPhone = CountryLogic.formatCurrentCountryPhone(phoneNumber); + final String fingerPrint = await DeviceHelper.getDeviceFingerprint(); final response = await CRUD().post( link: _verifyOtpUrl, payload: { 'phone_number': fixedPhone, 'token_code': otpCode, 'context': 'login', - 'user_type': 'passenger' + 'user_type': 'passenger', + 'fingerPrint': fingerPrint, }, );