diff --git a/app/Controllers/RestAuthenticationController.php b/app/Controllers/RestAuthenticationController.php index dda9fd5..1634c60 100755 --- a/app/Controllers/RestAuthenticationController.php +++ b/app/Controllers/RestAuthenticationController.php @@ -124,7 +124,9 @@ class RestAuthenticationController extends AdminController $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - Verify Employee With Mobile Number: Function called"); try { - $mobile_number = $this->request->getJSON()->mobile_number; + $data = $this->request->getJSON(); + $mobile_number = $data->mobile_number; + $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: Received mobile_number = " . $mobile_number); $empdata = RestAuthHelper::getPreAndPostDataByEmailOrMobile(['mobile_number' => $mobile_number]); @@ -147,6 +149,8 @@ class RestAuthenticationController extends AdminController $employeeData = $empdata['pre']; $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: Using PRE data"); } + + $otp = random_int(100000, 999999); $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: Final employee data to verify = " . json_encode($employeeData)); @@ -156,7 +160,7 @@ class RestAuthenticationController extends AdminController log_message('error', ' '); log_message('error', '************************ PRE END ********************************'); - $otp = random_int(100000, 999999); + $sql = " UPDATE employees INNER JOIN employee_polices ON employee_polices.employee_id = employees.id @@ -175,6 +179,19 @@ class RestAuthenticationController extends AdminController if($update) { + + //If post-enrollment data exist update the same otp generated from pre-enrollment. + if (isset($empdata['post']['client_id']) && !empty($empdata['post']['client_id'])) { + $data->otp = $otp; + $data->client_id = $empdata['post']['client_id']; + $data->employee_id = $empdata['post']['employee_id']; + $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: Attached otp, client_id and employee_id from POST data to update the otp"); + + $this->callThirdPartyAPI($data, 'updateEmpOTP'); + $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: Calling callThirdPartyAPI for updateEmpOTP"); + } + + //send sms $SMSResult = sendOtpSms($mobile_number, $otp); if ($SMSResult['status'] == 'success') @@ -186,6 +203,13 @@ class RestAuthenticationController extends AdminController return $this->respond(['status' => 'failed', 'code' => 404, 'data' => $result], 200); } + }else{ + + $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: OTP update query Failed. SQL = " . $db->getLastQuery()); + + $result = ['user_verification' => false, 'message' => "Try again. , try again"]; + return $this->respond(['status' => 'failed', 'code' => 404, 'data' => $result], 200); + } @@ -194,8 +218,11 @@ class RestAuthenticationController extends AdminController $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: Employee ID not found, calling third-party API to POST"); log_message('error', ' '); log_message('error', '************************ PRE END ********************************'); + // Call the third-party API function - return $this->callThirdPartyAPI($this->request->getJSON(),'verifyEmployeeNumber'); + $reqData = $this->request->getJSON(); + $reqData->otp = $otp; + return $this->callThirdPartyAPI($reqData,'verifyEmployeeNumber'); } } catch (\Throwable $th) { @@ -231,22 +258,7 @@ class RestAuthenticationController extends AdminController $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithEmailId: employee data both PRE & POST = " . json_encode($empdata)); - // $employeeData = $this->employeeModel->select(' - // employees.relationship, - // EP.employee_id, - // employees.client_id, - // employees.client_branch_id, - // employees.email_corporate - - // ') - // ->join('employee_polices EP', 'EP.employee_id = employees.id', 'inner') - // ->where('employees.is_active', 1) - // ->where('employees.relationship', 'Self') - // ->where('employees.emp_status !=', 'truncated') - // ->where('employees.email_corporate', $email) - // ->where('EP.is_active', 1) - // ->whereIn('EP.status', ['draft', 'enrolled', 'expired']) - // ->first(); + $employeeData = []; if (isset($empdata['pre']) && !empty($empdata['pre'])) { @@ -254,15 +266,12 @@ class RestAuthenticationController extends AdminController $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithEmailId: Using PRE data"); } + $otp = random_int(100000, 999999); - if (isset($employeeData['employee_id'])) { + if (isset($employeeData['employee_id'])) + { $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithEmailId: Valid employee found, generating OTP"); - $otp = random_int(100000, 999999); - - // $update = $this->employeeModel->where('email_corporate', $email)->where('relationship', 'self') - // ->where('is_active', 1)->set(array('otp' => $otp )) - // ->update(); $sql = " UPDATE employees @@ -276,7 +285,7 @@ class RestAuthenticationController extends AdminController "; $db = db_connect(); - // $update = $db->query($sql, [$otp, $email]); + $update = $db->query($sql, [$otp, $employeeData['employee_id']]); $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithEmailId: OTP update query executed. SQL = " . $db->getLastQuery()); @@ -284,17 +293,20 @@ class RestAuthenticationController extends AdminController if($update) { $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithEmailId: OTP updated successfully in PRE DATABASE"); - $data->otp = $otp; + + //If post-enrollment data exist update the same otp generated from pre-enrollment. if (isset($empdata['post']['client_id']) && !empty($empdata['post']['client_id'])) { + $data->otp = $otp; $data->client_id = $empdata['post']['client_id']; $data->employee_id = $empdata['post']['employee_id']; $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithEmailId: Attached otp, client_id and employee_id from POST data to update the otp"); + + $this->callThirdPartyAPI($data, 'updateEmpOTP'); + $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithEmailId: Calling callThirdPartyAPI for updateEmpOTP"); } - $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithEmailId: Calling callThirdPartyAPI for updateEmpOTP"); - $this->callThirdPartyAPI($data, 'updateEmpOTP'); - + //send Email $common = [ 'client_id' => $employeeData['client_id'], 'client_branch_id' => $employeeData['client_branch_id'], @@ -332,15 +344,16 @@ class RestAuthenticationController extends AdminController } else { $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithEmailId: Employee not found with email in the PRE DATABASE, falling back to third-party API"); + + // Call the third-party API function $apiParams = $this->request->getJSON(); if (!empty($empdata['post']['client_id'])) { $apiParams->client_id = $empdata['post']['client_id']; } - // print_r($apiParams); die; - // Call the third-party API function + $apiParams->otp = $otp; + return $this->callThirdPartyAPI($apiParams, 'verifyEmployeeEmailId'); log_message('error', ' '); log_message('error', '************************ PRE END ********************************'); - return $this->callThirdPartyAPI($apiParams, 'verifyEmployeeEmailId'); } } catch (\Throwable $th) { log_message('error', ' '); @@ -359,79 +372,42 @@ class RestAuthenticationController extends AdminController try { - $otp_verification = isset($this->request->getJSON()->otp_verification) ? $this->request->getJSON()->otp_verification : null; + $mobile_number = isset($this->request->getJSON()->mobile_number) ? $this->request->getJSON()->mobile_number : null; - - $otp = isset($this->request->getJSON()->otp) ? $this->request->getJSON()->otp : null; $email_id = isset($this->request->getJSON()->email_id) ? $this->request->getJSON()->email_id : null; + $otp = isset($this->request->getJSON()->otp) ? $this->request->getJSON()->otp : null; - if (isset($this->request->getJSON()->login_by_hr)) - { - $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: login_by_hr detected, fetching employee data directly"); - $employeeData = $this->employeeModel->where('id', $this->request->getJSON()->employee_id)->where('relationship', 'self')->where('emp_status !=', 'truncated')->where('is_active', 1)->first(); - $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: employeeData (login_by_hr) = " . json_encode($employeeData)); - }else{ - - $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: Fetching empdata via RestAuthHelper"); - $empdata = RestAuthHelper::getPreAndPostDataByEmailOrMobile(['email_id' => $email_id, 'otp' => $otp, 'mobile_number' => $mobile_number ]); - // print_r($empdata); die; - - if(empty($empdata)){ - $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: empdata is empty"); - log_message('error', ' '); - log_message('error', '************************ PRE END ********************************'); - return $this->respond(['status' => 'failed','code' => 404,'data' => "", 'message' => "Invalid OTP"],200); - } - - $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: empdata = " . json_encode($empdata)); - - if (isset($mobile_number)) - { - // $employeeData = $this->employeeModel->where('mobile', $mobile_number)->where('relationship', 'self')->where('emp_status !=', 'truncated')->where('is_active', 1)->first(); - - $employeeData = $this->employeeModel - ->select('employees.*') - ->join('employee_polices EP', 'EP.employee_id = employees.id', 'inner') - ->where('employees.is_active', 1) - ->where('employees.relationship', 'self') - ->where('employees.emp_status !=', 'truncated') - ->where('employees.mobile', $mobile_number) - ->where('EP.is_active', 1) - ->whereIn('EP.status', ['draft', 'enrolled']) - ->first(); - } else { - // $employeeData = $this->employeeModel->where('email_corporate', $email_id)->where('otp', $otp)->where('relationship', 'self')->where('emp_status !=', 'truncated')->where('is_active', 1)->first(); - $employeeData = $this->employeeModel - ->select('employees.*') - ->join('employee_polices', 'employees.id = employee_polices.employee_id') - ->where('employees.email_corporate', $email_id) - ->where('employees.relationship', 'Self') - ->where('employee_polices.is_active', 1) - ->whereIn('employee_polices.status', ['draft', 'enrolled']) - ->where('employees.is_active', 1) - ->whereIn('employees.emp_status', ['draft', 'enrolled']) - ->where('employees.otp', $otp) - ->orderBy('id', 'desc') - ->first(); - } - - $employeeData = []; - if (isset($empdata['pre']) && !empty($empdata['pre'])) { - $employeeData = $empdata['pre']; - $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: Using PRE data from empdata"); - } + $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: Fetching empdata via RestAuthHelper"); + $empdata = RestAuthHelper::getPreAndPostDataByEmailOrMobile(['email_id' => $email_id, 'otp' => $otp, 'mobile_number' => $mobile_number ]); + + if(empty($empdata)){ + $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: empdata is empty"); + log_message('error', ' '); + log_message('error', '************************ PRE END ********************************'); + return $this->respond(['status' => 'failed','code' => 404,'data' => "", 'message' => "Invalid OTP"],200); } + $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: empdata = " . json_encode($empdata)); + + + $employeeData = []; + if (isset($empdata['pre']) && !empty($empdata['pre'])) { + $employeeData = $empdata['pre']; + $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: Using PRE data from empdata"); + } + + + $requestData = $this->request->getJSON(); if (isset($empdata['post']['client_id']) && !empty($empdata['post']['client_id'])) { $requestData->client_id = $empdata['post']['client_id']; $requestData->employee_id = $empdata['post']['employee_id']; $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: Added client_id and employee_id to requestData for to get the POST employee data"); } - // print_r($requestData); die; + - if ($employeeData && $otp_verification == true || $employeeData && isset($this->request->getJSON()->login_by_hr) || $employeeData && isset($this->request->getJSON()->otp) ) + if ( $employeeData && isset($this->request->getJSON()->otp) ) { $this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: Verified employee found"); $auth = HttpRequestHelper::getRequestInfo(); diff --git a/app/Helpers/RestAuthHelper.php b/app/Helpers/RestAuthHelper.php index 27d16b0..1308676 100644 --- a/app/Helpers/RestAuthHelper.php +++ b/app/Helpers/RestAuthHelper.php @@ -285,6 +285,10 @@ class RestAuthHelper ->where('EP.is_active', 1) ->whereIn('EP.status', ['draft', 'enrolled']); + if (!empty($otp)) { + $builder->where('employees.otp', $otp); + } + if (!empty($old_mpin)) { $builder->where('employees.mpin', $old_mpin); } diff --git a/app/Helpers/sms_helper.php b/app/Helpers/sms_helper.php index c4fa87a..e8398f6 100644 --- a/app/Helpers/sms_helper.php +++ b/app/Helpers/sms_helper.php @@ -16,6 +16,8 @@ if (!function_exists('sendOtpSms')) { // Replace variables {#var#} $message = "Hi, Your One Time Code for logging into Nhance {$appName} App is {$otp}. Valid for 3 minutes. Please do not share this with anyone. -NHANCE"; + log_message('info' , 'SMS - Message '.$message); + // Build the API URL $url = "https://smsapi.24x7sms.com/api_2.0/SendSMS.aspx?" . http_build_query([ 'APIKEY' => $apiKey, @@ -29,6 +31,8 @@ if (!function_exists('sendOtpSms')) { // Send request $response = @file_get_contents($url); + log_message('info' , 'SMS - Response '.$response); + // If response failed if ($response === FALSE) { return ['status' => 'failed', 'message' => 'Failed to send SMS.'];