1278 lines
68 KiB
PHP
Executable File
1278 lines
68 KiB
PHP
Executable File
<?php
|
|
|
|
// declare(strict_types=1);
|
|
|
|
|
|
namespace App\Controllers;
|
|
use App\Helpers\MailHelper;
|
|
use App\Controllers\LoginController;
|
|
use App\Helpers\DepositHelper;
|
|
use App\Helpers\JWTToken;
|
|
use App\Helpers\HttpRequestHelper;
|
|
use App\Helpers\RestAuthHelper;
|
|
|
|
use CodeIgniter\HTTP\IncomingRequest;
|
|
use CodeIgniter\HTTP\RequestInterface;
|
|
use CodeIgniter\HTTP\ResponseInterface;
|
|
use Psr\Log\LoggerInterface;
|
|
use CodeIgniter\API\ResponseTrait;
|
|
|
|
|
|
|
|
use App\Models\EmployeeModel;
|
|
use App\Models\AuthHistoryModel;
|
|
use App\Models\LevelContactModel;
|
|
|
|
use Firebase\JWT\JWT;
|
|
// require_once('../vendor/autoload.php');
|
|
|
|
|
|
|
|
class RestAuthenticationController extends AdminController
|
|
{
|
|
use ResponseTrait;
|
|
|
|
protected $myLogger;
|
|
protected $employeeModel;
|
|
protected $authHistoryModel;
|
|
protected $hrModel;
|
|
|
|
|
|
public function __construct()
|
|
{
|
|
// set_session_context('Client');
|
|
$this->myLogger = \Config\Services::mylogger();
|
|
|
|
$this->employeeModel = new EmployeeModel();
|
|
$this->authHistoryModel = new AuthHistoryModel();
|
|
$this->hrModel = new LevelContactModel();
|
|
|
|
}
|
|
|
|
public function index()
|
|
{
|
|
$this->myLogger->logme('error','Rest Authentication function called');
|
|
$data =["id"=>"2", "role"=>"staff"];
|
|
|
|
print_r(JWTToken::encode($data));
|
|
}
|
|
|
|
public function logined()
|
|
{
|
|
|
|
$this->myLogger->logme('error','Rest Authentication function called');
|
|
|
|
echo "Rest Authentication Logined Success........";
|
|
}
|
|
|
|
private function callThirdPartyAPI($postData , $endPoint)
|
|
{
|
|
$client = \Config\Services::curlrequest();
|
|
$url = env('POST_ENROLLMENT_BASEURL').$endPoint;
|
|
$response = $client->post( $url, ['json' => $postData, 'http_errors' => false ] );
|
|
// return json_decode($response->getBody(), true);
|
|
return $response->getBody();
|
|
}
|
|
|
|
// public function callThirdPartyGETAPI($queryParams, $endPoint)
|
|
// {
|
|
// $client = \Config\Services::curlrequest();
|
|
// $url = env('POST_ENROLLMENT_BASEURL') . $endPoint;
|
|
|
|
// $response = $client->get($url, [
|
|
// 'query' => $queryParams, // pass as query parameters
|
|
// 'http_errors' => false // prevent exception on non-200 status
|
|
// ]);
|
|
|
|
// return $response->getBody();
|
|
// }
|
|
|
|
public function callThirdPartyGETAPI($queryParams, $endPoint, $params = [])
|
|
{
|
|
$client = \Config\Services::curlrequest();
|
|
$url = env('POST_ENROLLMENT_BASEURL') . $endPoint;
|
|
|
|
$options = [
|
|
'query' => $queryParams,
|
|
'http_errors' => false,
|
|
];
|
|
|
|
if (isset($params['token']) && !empty($params['token'])) {
|
|
$options['headers'] = [
|
|
'Authorization' => 'Bearer ' . $params['token'],
|
|
'Accept' => 'application/json'
|
|
];
|
|
}
|
|
|
|
$response = $client->get($url, $options);
|
|
|
|
return $response->getBody();
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// employee auth api's start
|
|
|
|
public function verifyEmployeeWithMobileNumber()
|
|
{
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE START ********************************');
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - Verify Employee With Mobile Number: Function called");
|
|
|
|
try {
|
|
$mobile_number = $this->request->getJSON()->mobile_number;
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: Received mobile_number = " . $mobile_number);
|
|
|
|
$empdata = RestAuthHelper::getPreAndPostDataByEmailOrMobile(['mobile_number' => $mobile_number]);
|
|
|
|
if(empty($empdata)){
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: No employee data found both PRE & POST");
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
$result = ['user_verification' => false , 'message' => "User not found"];
|
|
return $this->respond(['status' => 'failed','code' => 404,'data' => $result],200);
|
|
}
|
|
|
|
|
|
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: employee data both PRE & POST = " . json_encode($empdata));
|
|
|
|
|
|
$employeeData = [];
|
|
if (isset($empdata['pre']) && !empty($empdata['pre'])) {
|
|
$employeeData = $empdata['pre'];
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: Using PRE data");
|
|
}
|
|
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: Final employee data to verify = " . json_encode($employeeData));
|
|
|
|
if (isset($employeeData['employee_id']))
|
|
{
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: Employee verified with ID = " . $employeeData['employee_id']);
|
|
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
|
|
SET employees.otp = ?
|
|
WHERE employees.id = ?
|
|
AND employees.relationship = 'self'
|
|
AND employees.is_active = 1
|
|
AND employee_polices.is_active = 1
|
|
AND employee_polices.status IN ('draft', 'enrolled')
|
|
";
|
|
|
|
$db = db_connect();
|
|
$update = $db->query($sql, [$otp, $employeeData['employee_id']]);
|
|
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: OTP update query executed. SQL = " . $db->getLastQuery());
|
|
|
|
if($update)
|
|
{
|
|
//send sms
|
|
$SMSResult = sendOtpSms($mobile_number, $otp);
|
|
if ($SMSResult['status'] == 'success')
|
|
{
|
|
$result = ['user_verification' => true ,'message' => "Verified Successfully" ];
|
|
return $this->respond(['status' => 'success','code' => 200,'data' => $result],200);
|
|
}else{
|
|
$result = ['user_verification' => false, 'message' => "SMS sending failed , try again"];
|
|
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => $result], 200);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
$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');
|
|
}
|
|
} catch (\Throwable $th) {
|
|
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithMobileNumber: Exception: " . $th->getMessage() . " --- Line: " . $th->getLine() . " --- Trace: " . $th->getTraceAsString());
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
return $this->respond(['status' => 'failed','code' => 500,'data' => "", 'message' => $th],500);
|
|
}
|
|
}
|
|
|
|
public function verifyEmployeeWithEmailId()
|
|
{
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE START ********************************');
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - Verify Employee With EmailId: Function called");
|
|
|
|
try {
|
|
|
|
$data = $this->request->getJSON();
|
|
$email = $data->email;
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithEmailId: Received Email ID = " . $email);
|
|
|
|
$empdata = RestAuthHelper::getPreAndPostDataByEmailOrMobile(['email_id' => $email]);
|
|
// print_r($empdata); die;
|
|
|
|
if(empty($empdata)){
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithEmailId: No employee data found both PRE & POST");
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
$result = ['user_verification' => false , 'message' => "User not found"];
|
|
return $this->respond(['status' => 'failed','code' => 404,'data' => $result],200);
|
|
}
|
|
|
|
$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'])) {
|
|
$employeeData = $empdata['pre'];
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithEmailId: Using PRE data");
|
|
}
|
|
|
|
|
|
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
|
|
INNER JOIN employee_polices ON employee_polices.employee_id = employees.id
|
|
SET employees.otp = ?
|
|
WHERE employees.id = ?
|
|
AND employees.relationship = 'self'
|
|
AND employees.is_active = 1
|
|
AND employee_polices.is_active = 1
|
|
AND employee_polices.status IN ('draft', 'enrolled')
|
|
";
|
|
|
|
$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());
|
|
|
|
if($update)
|
|
{
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithEmailId: OTP updated successfully in PRE DATABASE");
|
|
$data->otp = $otp;
|
|
if (isset($empdata['post']['client_id']) && !empty($empdata['post']['client_id'])) {
|
|
$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->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithEmailId: Calling callThirdPartyAPI for updateEmpOTP");
|
|
$this->callThirdPartyAPI($data, 'updateEmpOTP');
|
|
|
|
|
|
$common = [
|
|
'client_id' => $employeeData['client_id'],
|
|
'client_branch_id' => $employeeData['client_branch_id'],
|
|
'client_policy_id' => null,
|
|
'employee_policy_id' => null,
|
|
'employee_id' => $employeeData['employee_id'],
|
|
'mail_type' => 'otp_mail',
|
|
];
|
|
|
|
$subject = 'Nhance user verification - OTP';
|
|
$mail_content = $otp . ' is your verification code for Nhance.';
|
|
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithEmailId: Sending OTP email to " . $employeeData['email_corporate']);
|
|
$res = MailHelper::send_email(['mail' => $employeeData['email_corporate'], 'subject' => $subject, 'common' => $common, 'message' => $mail_content]);
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithEmailId: Mail response = " . $res);
|
|
|
|
if (json_decode($res)->status == 'success') {
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
$result = ['user_verification' => true, 'message' => "Verified Successfully"];
|
|
return $this->respond(['status' => 'success', 'code' => 200, 'data' => $result], 200);
|
|
} else {
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
$result = ['user_verification' => false, 'message' => "Mail sending failed , try again"];
|
|
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => $result], 200);
|
|
}
|
|
} else {
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithEmailId: OTP update failed in PRE DATABASE");
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
$result = ['user_verification' => false, 'message' => "Verification failed , try again"];
|
|
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => $result], 200);
|
|
}
|
|
} else {
|
|
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithEmailId: Employee not found with email in the PRE DATABASE, falling back to third-party API");
|
|
$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
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
return $this->callThirdPartyAPI($apiParams, 'verifyEmployeeEmailId');
|
|
}
|
|
} catch (\Throwable $th) {
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyEmployeeWithEmailId: Exception: " . $th->getMessage() . " --- Line: " . $th->getLine() . " --- Trace: " . $th->getTraceAsString());
|
|
return $this->respond(['status' => 'failed', 'code' => 500, 'data' => "", 'message' => $th], 500);
|
|
}
|
|
}
|
|
|
|
public function getVerifiedUserData()
|
|
{
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE START ********************************');
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - Get Verified User Data: Function called");
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: Received payload = " . json_encode($this->request->getJSON() ?? []));
|
|
|
|
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;
|
|
|
|
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' => "No data found"],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");
|
|
}
|
|
|
|
}
|
|
|
|
$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) )
|
|
{
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: Verified employee found");
|
|
$auth = HttpRequestHelper::getRequestInfo();
|
|
if ($auth) {
|
|
$data = [
|
|
'user_id' => $employeeData['id'],
|
|
'user_type' => 'employee',
|
|
'ip' => $auth['ip'],
|
|
'platform' => $auth['platform'],
|
|
'broswer' => $auth['browser'],
|
|
];
|
|
$this->authHistoryModel->insert($data);
|
|
}
|
|
|
|
// print_r($employeeData); die;
|
|
unset($employeeData['employee_id']);
|
|
$employeeData['token_type'] = "pre";
|
|
$result = JWTToken::encode($employeeData);
|
|
|
|
if(isset($this->request->getJSON()->otp)){
|
|
$this->employeeModel->where('id', $employeeData['id'])->where('otp', $otp)->where('relationship', 'self')->set(['otp'=>null])->update();
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: Reset the otp to null");
|
|
}
|
|
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: Calling third-party API - getVerifiedUserData to get the POST employee data");
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
// Call the third-party API function
|
|
$apiResponse = $this->callThirdPartyAPI($requestData,'getVerifiedUserData');
|
|
return $this->respond(['status' => 'success','code' => 200,'data' => $result , 'post_enrollment'=> json_decode($apiResponse, true)],200);
|
|
|
|
} else {
|
|
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: Employee not verified - calling third-party API fallback to get the POST employee data");
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
// Call the third-party API function
|
|
$apiResponse = $this->callThirdPartyAPI($requestData,'getVerifiedUserData');
|
|
return $this->respond(['status' => 'failed','code' => 404,'data' => '' , 'post_enrollment'=> json_decode($apiResponse, true)],200);
|
|
|
|
}
|
|
|
|
} catch (\Exception $e) {
|
|
$this->myLogger->logme("error", "Exception: " . $e->getMessage() . " --- Line: " . $e->getLine() . " --- Trace: " . $e->getTraceAsString());
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
return $this->respond(['status' => 'failed','code' => 500,'data' => "", 'message' => $e->getMessage()],500);
|
|
}
|
|
}
|
|
|
|
// employee auth api's end
|
|
|
|
|
|
// HR auth api's start
|
|
|
|
public function verifyHrWithMobileNumber()
|
|
{
|
|
try {
|
|
$mobile_number = $this->request->getJSON()->mobile_number;
|
|
|
|
$HrData = $this->hrModel->where('mobile', $mobile_number)
|
|
->where('contact_type', 'client')
|
|
->where('is_active', 1)
|
|
->first();
|
|
|
|
if ($HrData) {
|
|
|
|
$result = ['user_verification' => true ,'message' => "Verified Successfully"];
|
|
return $this->respond(['status' => 'success','code' => 200,'data' => $result],200);
|
|
} else {
|
|
// Call the third-party API function
|
|
return $this->callThirdPartyAPI($this->request->getJSON(),'verifyHrWithMobileNumber');
|
|
|
|
}
|
|
} catch (\Throwable $th) {
|
|
return $this->respond(['status' => 'failed','code' => 500,'data' => $th],500);
|
|
}
|
|
}
|
|
|
|
public function verifyHrWithEmail()
|
|
{
|
|
try {
|
|
|
|
$data = $this->request->getJSON();
|
|
|
|
$email = $data->email;
|
|
|
|
$HrData = $this->hrModel->where('email', $email)
|
|
->where('contact_type', 'client')
|
|
->where('is_active', 1)
|
|
->first();
|
|
|
|
if ($HrData) {
|
|
|
|
$otp = random_int(100000, 999999);
|
|
|
|
$sql = "
|
|
UPDATE level_contacts
|
|
SET otp = ?
|
|
WHERE email = ?
|
|
AND contact_type = 'client'
|
|
AND is_active = 1
|
|
";
|
|
|
|
$db = db_connect();
|
|
$update = $db->query($sql, [$otp, $email]);
|
|
|
|
if($update)
|
|
{
|
|
$data->otp = $otp;
|
|
$this->callThirdPartyAPI($data, 'updateHROTP');
|
|
|
|
$common = [
|
|
'login_type' => 'HR login',
|
|
'login_email' => $email,
|
|
'mail_type' => 'otp_mail'
|
|
];
|
|
$subject = 'Nhance user verification - OTP';
|
|
$mail_content = $otp . ' is your verification code for Nhance.';
|
|
$res = MailHelper::send_email(['mail' => $email, 'subject' => $subject, 'common' => $common, 'message' => $mail_content]);
|
|
$this->myLogger->logme("error", $res);
|
|
|
|
if (json_decode($res)->status == 'success') {
|
|
$result = ['user_verification' => true, 'message' => "Verified Successfully"];
|
|
return $this->respond(['status' => 'success', 'code' => 200, 'data' => $result], 200);
|
|
} else {
|
|
$result = ['user_verification' => false, 'message' => "Mail sending failed , try again"];
|
|
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => $result], 200);
|
|
}
|
|
} else {
|
|
|
|
$result = ['user_verification' => false, 'message' => "Verification failed , try again"];
|
|
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => $result], 200);
|
|
}
|
|
|
|
} else {
|
|
// Call the third-party API function
|
|
return $this->callThirdPartyAPI($this->request->getJSON(),'verifyHrWithEmail');
|
|
|
|
}
|
|
} catch (\Throwable $th) {
|
|
return $this->respond(['status' => 'failed','code' => 500,'data' => $th],500);
|
|
}
|
|
}
|
|
|
|
public function getVerifiedHrData()
|
|
{
|
|
try {
|
|
// mobile number
|
|
$otp_verification = isset($this->request->getJSON()->otp_verification) ? $this->request->getJSON()->otp_verification : null;
|
|
$mobile_number = isset($this->request->getJSON()->mobile_no) ? $this->request->getJSON()->mobile_no : null;
|
|
// email id
|
|
$otp = isset($this->request->getJSON()->otp) ? $this->request->getJSON()->otp : null;
|
|
$email = isset($this->request->getJSON()->email) ? $this->request->getJSON()->email : null;
|
|
|
|
if (isset($mobile_number))
|
|
{
|
|
$hrData = $this->hrModel->where('mobile', $mobile_number)->where('contact_type', 'client')->first();
|
|
}else{
|
|
$hrData = $this->hrModel->where('email', $email)->where('contact_type', 'client')->where('otp', $otp)->first();
|
|
}
|
|
|
|
if ($hrData && $otp_verification == true || $hrData && isset($this->request->getJSON()->otp) )
|
|
{
|
|
|
|
$auth = HttpRequestHelper::getRequestInfo();
|
|
if ($auth) {
|
|
$data = [
|
|
'user_id' => $hrData['id'],
|
|
'user_type' => 'hr',
|
|
'ip' => $auth['ip'],
|
|
'platform' => $auth['platform'],
|
|
'broswer' => $auth['browser'],
|
|
];
|
|
|
|
$this->authHistoryModel->insert($data);
|
|
|
|
}
|
|
|
|
|
|
if(isset($this->request->getJSON()->mobile_no)){
|
|
|
|
$getAllhrData = $this->hrModel->select('level_contacts.id ,level_contacts.mobile , level_contacts.email , clients.id as client_id, clients.client_name, clients.short_name , client_branch.id as client_branch_id,client_branch.branch_name , client_branch.post_branch_id')
|
|
->join('client_branch', 'level_contacts.ref_id = client_branch.id', 'left')
|
|
->join('clients', 'client_branch.client_id = clients.id', 'left')
|
|
->where('level_contacts.mobile', $mobile_number )
|
|
->where('level_contacts.contact_type', 'client')
|
|
->findAll();
|
|
|
|
}else if(isset($this->request->getJSON()->otp)){
|
|
|
|
$this->hrModel->where('email', $email)->where('otp', $otp)->where('contact_type', 'client')->set(['otp'=>null])->update();
|
|
|
|
$getAllhrData = $this->hrModel->select('level_contacts.id ,level_contacts.mobile , level_contacts.email , clients.id as client_id, clients.client_name, clients.short_name , client_branch.id as client_branch_id,client_branch.branch_name , client_branch.post_branch_id')
|
|
->join('client_branch', 'level_contacts.ref_id = client_branch.id', 'left')
|
|
->join('clients', 'client_branch.client_id = clients.id', 'left')
|
|
->where('level_contacts.email', $email )
|
|
->where('level_contacts.contact_type', 'client')
|
|
->findAll();
|
|
}
|
|
|
|
if(count($getAllhrData))
|
|
{
|
|
$db2 = \Config\Database::connect('postDB');
|
|
foreach ($getAllhrData as $key => $value) {
|
|
|
|
$HRAccessData = $db2->table('hr_access_control hr')
|
|
->where('hr.pre_client_id',$value['client_id'])
|
|
->where('hr.pre_branch_id', $value['client_branch_id'])
|
|
->where('hr.pre_hr_id', $value['id'])
|
|
->get()->getRowArray();
|
|
|
|
|
|
if (!empty($HRAccessData) && isset($HRAccessData['allowed_modules'])) {
|
|
|
|
$decoded = json_decode($HRAccessData['allowed_modules'], true);
|
|
$getAllhrData[$key]['allowed_modules'] = $decoded;
|
|
|
|
$token = JWTToken::encode($HRAccessData);
|
|
$getAllhrData[$key]['token'] = $token;
|
|
|
|
} else {
|
|
$getAllhrData[$key]['allowed_modules'] = [];
|
|
$getAllhrData[$key]['token'] = "";
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
$apiResponse = $this->callThirdPartyAPI($this->request->getJSON(),'getVerifiedHrData');
|
|
return $this->respond(['status' => 'success','code' => 200,'data' => $getAllhrData , 'post_enrollment'=> json_decode($apiResponse, true)],200);
|
|
|
|
//call and get allowed module data from post enrollment
|
|
// $queryParams = [
|
|
// 'hr_id' => $hrData['0']['id'],
|
|
// 'request_for' => 'pre_enrollment'
|
|
// ];
|
|
// $HRAccessRes = $this->callThirdPartyGETAPI($queryParams,'getHRAccessData');
|
|
// $HRAccessData = json_decode($HRAccessRes,true);
|
|
// if(isset($HRAccessData['data']['allowed_modules'])){ $hrData['0']['allowed_modules'] = json_decode($HRAccessData['data']['allowed_modules'],true)['pre']; }else{ $hrData['0']['allowed_modules'] = []; }
|
|
|
|
// $hrData['0']['token_type'] = 'pre';
|
|
// $result = JWTToken::encode($hrData['0']);
|
|
|
|
// // Call the third-party API function
|
|
// $apiResponse = $this->callThirdPartyAPI($this->request->getJSON(),'getVerifiedHrData');
|
|
// return $this->respond(['status' => 'success','code' => 200,'data' => $result , 'post_enrollment'=> json_decode($apiResponse, true)],200);
|
|
|
|
|
|
} else {
|
|
|
|
// Call the third-party API function
|
|
$apiResponse = $this->callThirdPartyAPI($this->request->getJSON(),'getVerifiedHrData');
|
|
return $this->respond(['status' => 'failed','code' => 404,'data' => "" , 'post_enrollment'=> json_decode($apiResponse, true)],200);
|
|
}
|
|
} catch (\Exception $e) {
|
|
return $this->respond(['status' => 'failed','code' => 500,'data' => $e->getMessage()],500);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public function getUserIdFromToken()
|
|
{
|
|
$id = JWTToken::getUserIdFromToken();
|
|
// echo $id['id'];
|
|
echo "Id----> ";
|
|
print_r($id);
|
|
$role = JWTToken::getUserRoleFromToken();
|
|
echo " Role----> ";
|
|
echo $role;
|
|
|
|
|
|
$tokenArray = JWTToken::decodeToken();
|
|
echo " TokenArray----> ";
|
|
print_r($tokenArray);
|
|
}
|
|
|
|
|
|
public function saveMpin()
|
|
{
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE START ********************************');
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - Save Mpin: Function called");
|
|
$payload = $this->request->getJSON() ?? [];
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - saveMpin: Request payload = " . json_encode($payload));
|
|
|
|
try {
|
|
|
|
$mobile_number = isset($this->request->getJSON()->mobile_number) ? $this->request->getJSON()->mobile_number : null;
|
|
$email_id = isset($this->request->getJSON()->email_id) ? $this->request->getJSON()->email_id : null;
|
|
|
|
$empdata = RestAuthHelper::getPreAndPostDataByEmailOrMobile(['email_id' => $email_id, 'mobile_number' => $mobile_number ]);
|
|
// print_r($empdata); die;
|
|
|
|
if(empty($empdata)){
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - saveMpin: No employee data found both PRE and POST");
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
$result = ['user_verification' => false , 'message' => "User not found"];
|
|
return $this->respond(['status' => 'failed','code' => 404,'data' => $result],200);
|
|
}
|
|
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - saveMpin: empdata = " . json_encode($empdata));
|
|
|
|
if (isset($mobile_number)) {
|
|
// $employeeData = $this->employeeModel->where('mobile', $mobile_number)->where('relationship', 'self')->first();
|
|
$employeeData = $this->employeeModel
|
|
->select('employees.*')
|
|
->join('employee_polices', 'employees.id = employee_polices.employee_id')
|
|
->where('employees.mobile', $mobile_number)
|
|
->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'])
|
|
->orderBy('id', 'desc')
|
|
->first();
|
|
} else {
|
|
// $employeeData = $this->employeeModel->where('email_corporate', $email_id)->where('relationship', 'self')->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'])
|
|
->orderBy('id', 'desc')
|
|
->first();
|
|
}
|
|
|
|
$employeeData = [];
|
|
if (isset($empdata['pre']) && !empty($empdata['pre'])) {
|
|
$employeeData = $empdata['pre'];
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - saveMpin: Using PRE data from empdata");
|
|
}
|
|
|
|
$mpin = $this->request->getJSON()->mpin;
|
|
$is_mpin_skipped = $this->request->getJSON()->is_mpin_skipped;
|
|
$is_biometric_enabled = $this->request->getJSON()->is_biometric_enabled;
|
|
|
|
$mpin_data_to_updata = [
|
|
'mpin' => $mpin,
|
|
'is_mpin_skipped' => $is_mpin_skipped,
|
|
'is_biometric_enabled' => $is_biometric_enabled
|
|
];
|
|
|
|
$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 - saveMpin: Added client_id & employee_id to requestData to get the POST employee data");
|
|
}
|
|
|
|
if ($employeeData) {
|
|
$id= $employeeData["id"];
|
|
$updateMpin = $this->employeeModel->where('id', $id)->set($mpin_data_to_updata)->update();
|
|
if($updateMpin){
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - saveMpin: MPIN updated successfully");
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
$this->callThirdPartyAPI($requestData, 'saveMpin');
|
|
$result = ['user_verification' => true , 'message' => "Mpin Updated"];
|
|
return $this->respond(['status' => 'success','code' => 200,'data' => $result],200);
|
|
}else{
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - saveMpin: MPIN update failed");
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
$result = ['user_verification' => true , 'message' => "Mpin Not Updated"];
|
|
return $this->respond(['status' => 'failed','code' => 404,'data' => $result],200);
|
|
}
|
|
|
|
|
|
} else {
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - saveMpin: Employee not found in final check, calling third-party API to the POST");
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
return $this->callThirdPartyAPI($requestData, 'saveMpin');
|
|
}
|
|
|
|
} catch (\Throwable $th) {
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - Exception: " . $th->getMessage() . " --- Line: " . $th->getLine() . " --- Trace: " . $th->getTraceAsString());
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
return $this->respond(['status' => 'failed','code' => 500,'data' => "", 'message' => $th],500);
|
|
}
|
|
}
|
|
|
|
public function updateMpin()
|
|
{
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE START ********************************');
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - Update Mpin: Function called");
|
|
|
|
$payload = $this->request->getJSON() ?? [];
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - updateMpin: Request payload = " . json_encode($payload));
|
|
|
|
try {
|
|
|
|
$mobile_number = isset($this->request->getJSON()->mobile_number) ? $this->request->getJSON()->mobile_number : null;
|
|
$email_id = isset($this->request->getJSON()->email_id) ? $this->request->getJSON()->email_id : null;
|
|
$old_mpin = $this->request->getJSON()->old_mpin;
|
|
$mpin = $this->request->getJSON()->new_mpin;
|
|
|
|
$empdata = RestAuthHelper::getPreAndPostDataByEmailOrMobile(['email_id' => $email_id, 'mobile_number' => $mobile_number, 'old_mpin' => $old_mpin ]);
|
|
// print_r($empdata); die;
|
|
|
|
if(empty($empdata)){
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - updateMpin: No employee data found both PRE and POST");
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
|
|
$result = ['user_verification' => false , 'message' => "User not found"];
|
|
return $this->respond(['status' => 'failed','code' => 404,'data' => $result],200);
|
|
}
|
|
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - updateMpin: empdata = " . json_encode($empdata));
|
|
|
|
if (isset($mobile_number)) {
|
|
// $employeeData = $this->employeeModel->where('mobile', $mobile_number)->where('mpin', $old_mpin)->where('relationship', 'self')->first();
|
|
$employeeData = $this->employeeModel
|
|
->select('employees.*')
|
|
->join('employee_polices', 'employees.id = employee_polices.employee_id')
|
|
->where('employees.mobile', $mobile_number)
|
|
->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.mpin', $old_mpin)
|
|
->orderBy('id', 'desc')
|
|
->first();
|
|
} else {
|
|
// $employeeData = $this->employeeModel->where('email_corporate', $email_id)->where('mpin', $old_mpin)->where('relationship', 'self')->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.mpin', $old_mpin)
|
|
->orderBy('id', 'desc')
|
|
->first();
|
|
}
|
|
|
|
$employeeData = [];
|
|
if (isset($empdata['pre']) && !empty($empdata['pre'])) {
|
|
$employeeData = $empdata['pre'];
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - updateMpin: 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'];
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - updateMpin: Added client_id & employee_id to requestData to get the POST employee data");
|
|
}
|
|
|
|
if ($employeeData) {
|
|
|
|
$id= $employeeData["id"];
|
|
$updateMpin = $this->employeeModel->where('id', $id)->set('mpin', $mpin)->update();
|
|
if($updateMpin){
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - updateMpin: MPIN updated successfully");
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
$this->callThirdPartyAPI($requestData, 'updateMpin');
|
|
$result = ['mpin_verification' => true , 'message' => "Mpin Updated"];
|
|
return $this->respond(['status' => 'success','code' => 200,'data' => $result],200);
|
|
}else{
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - updateMpin: MPIN update failed");
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
|
|
$result = ['mpin_verification' => true , 'message' => "Mpin Not Updated"];
|
|
return $this->respond(['status' => 'failed','code' => 404,'data' => $result],200);
|
|
}
|
|
|
|
} else {
|
|
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - updateMpin: Employee not found in final check, calling third-party API to the POST");
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
return $this->callThirdPartyAPI($requestData, 'updateMpin');
|
|
|
|
}
|
|
|
|
} catch (\Throwable $th) {
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - Exception: " . $th->getMessage() . " --- Line: " . $th->getLine() . " --- Trace: " . $th->getTraceAsString());
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
return $this->respond(['status' => 'failed','code' => 500,'data' => "", 'message' => $th],500);
|
|
}
|
|
}
|
|
|
|
public function verifyMpin()
|
|
{
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE START ********************************');
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - Verify Mpin: Function called");
|
|
|
|
$payload = $this->request->getJSON() ?? [];
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyMpin: Request payload = " . json_encode($payload));
|
|
|
|
try {
|
|
|
|
$mobile_number = isset($this->request->getJSON()->mobile_number) ? $this->request->getJSON()->mobile_number : null;
|
|
$email_id = isset($this->request->getJSON()->email_id) ? $this->request->getJSON()->email_id : null;
|
|
$mpin = $this->request->getJSON()->mpin;
|
|
|
|
$empdata = RestAuthHelper::getPreAndPostDataByEmailOrMobile(['email_id' => $email_id, 'mobile_number' => $mobile_number]);
|
|
// print_r($empdata); die;
|
|
|
|
if(empty($empdata)){
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyMpin: No employee data found both PRE and POST");
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => ""], 200);
|
|
}
|
|
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyMpin: empdata = " . json_encode($empdata));
|
|
|
|
if (isset($mobile_number)) {
|
|
// $employeeData = $this->employeeModel->where('mobile', $mobile_number)->where('relationship', 'self')->first();
|
|
$employeeData = $this->employeeModel
|
|
->select('employees.*')
|
|
->join('employee_polices', 'employees.id = employee_polices.employee_id')
|
|
->where('employees.mobile', $mobile_number)
|
|
->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'])
|
|
->orderBy('id', 'desc')
|
|
->first();
|
|
} else {
|
|
// $employeeData = $this->employeeModel->where('email_corporate', $email_id)->where('relationship', 'self')->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'])
|
|
->orderBy('id', 'desc')
|
|
->first();
|
|
}
|
|
|
|
$employeeData = [];
|
|
if (isset($empdata['pre']) && !empty($empdata['pre'])) {
|
|
$employeeData = $empdata['pre'];
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyMpin: 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'];
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyMpin: Added client_id to requestData to get the POST employee data");
|
|
}
|
|
|
|
|
|
if ($employeeData && $mpin == $employeeData["mpin"]) {
|
|
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyMpin: Verified employee found");
|
|
|
|
$auth = HttpRequestHelper::getRequestInfo();
|
|
if ($auth) {
|
|
$data = [
|
|
'user_id' => $employeeData['id'],
|
|
'user_type' => 'employee',
|
|
'ip' => $auth['ip'],
|
|
'platform' => $auth['platform'],
|
|
'broswer' => $auth['browser'],
|
|
];
|
|
|
|
$authdata = $this->authHistoryModel->insert($data);
|
|
}
|
|
|
|
unset($employeeData['employee_id']);
|
|
$employeeData['token_type'] = "pre";
|
|
$result = JWTToken::encode($employeeData);
|
|
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyMpin: Calling third-party API - verifyMpin to get the POST employee data");
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
|
|
// Call the third-party API function
|
|
$apiResponse = $this->callThirdPartyAPI($requestData, 'verifyMpin');
|
|
return $this->respond(['status' => 'success', 'code' => 200, 'data' => $result, 'post_enrollment' => json_decode($apiResponse, true)], 200);
|
|
} else {
|
|
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyMpin: Employee not verified - calling third-party API fallback to get the POST employee data");
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
|
|
|
|
// Call the third-party API function
|
|
$apiResponse = $this->callThirdPartyAPI($requestData, 'verifyMpin');
|
|
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => "", 'post_enrollment' => json_decode($apiResponse, true)], 200);
|
|
|
|
//$apiResponse = $this->callThirdPartyAPI($this->request->getJSON(),'/getVerifiedUserData');
|
|
// return $this->respond(['status' => 'failed','code' => 404,'data' => "", 'post_enrollment'=> json_decode($apiResponse, true)],200);
|
|
|
|
}
|
|
|
|
} catch (\Exception $e) {
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - Exception: " . $e->getMessage() . " --- Line: " . $e->getLine() . " --- Trace: " . $e->getTraceAsString());
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
return $this->respond(['status' => 'failed', 'code' => 500, 'data' => "", 'message' => $e->getMessage()], 500);
|
|
return $this->respond(['status' => 'failed', 'code' => 200, 'post_enrollment' => json_decode($apiResponse, true)], 200);
|
|
}
|
|
}
|
|
|
|
public function checkMpin()
|
|
{
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE START ********************************');
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - Check Mpin: Function called");
|
|
|
|
$payload = $this->request->getJSON() ?? [];
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - checkMpin: Request payload = " . json_encode($payload));
|
|
|
|
try {
|
|
$mobile_number = isset($this->request->getJSON()->mobile_number) ? $this->request->getJSON()->mobile_number : null;
|
|
$email_id = isset($this->request->getJSON()->email_id) ? $this->request->getJSON()->email_id : null;
|
|
|
|
$empdata = RestAuthHelper::getPreAndPostDataByEmailOrMobile(['email_id' => $email_id, 'mobile_number' => $mobile_number, 'check_mpin' => true]);
|
|
// print_r($empdata); die;
|
|
|
|
if(empty($empdata)){
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - checkMpin: No employee data found both PRE and POST");
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
|
|
return $this->respond(['status' => 'failed','code' => 404,'data' => "Mpin - not found", 'Mpin' =>null],200);
|
|
}
|
|
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - checkMpin: empdata = " . json_encode($empdata));
|
|
|
|
if (isset($mobile_number))
|
|
{
|
|
// $employeeData = $this->employeeModel->where('mobile', $mobile_number)->where('relationship', 'self')->first();
|
|
$employeeData = $this->employeeModel
|
|
->select('employees.*')
|
|
->join('employee_polices', 'employees.id = employee_polices.employee_id')
|
|
->where('employees.mobile', $mobile_number)
|
|
->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'])
|
|
->orderBy('id', 'desc')
|
|
->first();
|
|
}else{
|
|
// $employeeData = $this->employeeModel->where('email_corporate', $email_id)->where('relationship', 'self')->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'])
|
|
->orderBy('id', 'desc')
|
|
->first();
|
|
}
|
|
|
|
|
|
$employeeData = [];
|
|
if (isset($empdata['pre']) && !empty($empdata['pre'])) {
|
|
$employeeData = $empdata['pre'];
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - checkMpin: 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'];
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - checkMpin: Added client_id to requestData to get the POST employee data");
|
|
}
|
|
|
|
|
|
if ($employeeData && $employeeData["mpin"] != null) {
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - checkMpin: Mpin - Exist");
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
return $this->respond(['status' => 'success','code' => 200,'data' => "", 'message' => "Mpin - exist" , 'Mpin' =>$employeeData["mpin"], 'is_mpin_skipped' => $employeeData['is_mpin_skipped'], 'is_biometric_enabled' => $employeeData['is_biometric_enabled']],200);
|
|
} else {
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - checkMpin: Mpin - not found in PRE so call the thirdpartapi to the POST to check the MPIN");
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
// return $this->respond(['status' => 'failed','code' => 404,'data' => "Mpin - not found", 'Mpin' =>null],200);
|
|
return $this->callThirdPartyAPI($requestData, 'checkMpin');
|
|
}
|
|
|
|
} catch (\Exception $e) {
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - Exception: " . $e->getMessage() . " --- Line: " . $e->getLine() . " --- Trace: " . $e->getTraceAsString());
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
return $this->respond(['status' => 'failed','code' => 500,'data' => "", 'message' => $e->getMessage()],500);
|
|
}
|
|
}
|
|
|
|
public function forgotMPIN()
|
|
{
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE START ********************************');
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - Forgot Mpin: Function called");
|
|
|
|
$payload = $this->request->getJSON() ?? [];
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - forgotMPIN: Request payload = " . json_encode($payload));
|
|
|
|
try {
|
|
|
|
$json = $this->request->getJSON();
|
|
$mobile_number = $json->mobile_number ?? null;
|
|
$email_id = $json->email_id ?? null;
|
|
|
|
// Step 1: Check input
|
|
if (!$mobile_number && !$email_id) {
|
|
log_message('error', 'Mobile number and email ID are both missing.');
|
|
return $this->respond([
|
|
'status' => 'failed',
|
|
'code' => 400,
|
|
'message' => 'Mobile number or email ID is required.'
|
|
], 400);
|
|
}
|
|
|
|
$empdata = RestAuthHelper::getPreAndPostDataByEmailOrMobile(['email_id' => $email_id, 'mobile_number' => $mobile_number]);
|
|
// print_r($empdata); die;
|
|
|
|
if(empty($empdata)){
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - forgotMpin: No employee data found both PRE and POST");
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
|
|
return $this->respond(['status' => 'failed','code' => 404,'data' => "Mpin - not found", 'Mpin' =>null],200);
|
|
}
|
|
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - forgotMPIN: empdata = " . json_encode($empdata));
|
|
|
|
// Step 2: Fetch employee data
|
|
if ($mobile_number) {
|
|
log_message('info', 'Looking up employee by mobile number: ' . $mobile_number);
|
|
$employeeData = $this->employeeModel
|
|
->select('employees.*')
|
|
->join('employee_polices', 'employees.id = employee_polices.employee_id')
|
|
->where('employees.mobile', $mobile_number)
|
|
->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'])
|
|
->orderBy('id', 'desc')
|
|
->first();
|
|
} else {
|
|
log_message('info', 'Looking up employee by email: ' . $email_id);
|
|
$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'])
|
|
->orderBy('id', 'desc')
|
|
->first();
|
|
}
|
|
|
|
$employeeData = [];
|
|
if (isset($empdata['pre']) && !empty($empdata['pre'])) {
|
|
$employeeData = $empdata['pre'];
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - forgotMPIN: Using PRE data from empdata");
|
|
}
|
|
|
|
if (isset($empdata['post']['client_id']) && !empty($empdata['post']['client_id'])) {
|
|
$json->client_id = $empdata['post']['client_id'];
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - forgotMPIN: Added client_id to requestData to get the POST employee data");
|
|
}
|
|
|
|
// Step 3: Found employee
|
|
if (!empty($employeeData)) {
|
|
log_message('info', 'Employee found: ID = ' . $employeeData['id']);
|
|
|
|
$updateData = [
|
|
'mpin' => null,
|
|
'is_mpin_skipped' => null,
|
|
'is_biometric_enabled' => null
|
|
];
|
|
|
|
log_message('info', 'Updating employee MPIN fields to null for ID: ' . $employeeData['id']);
|
|
|
|
$updated = $this->employeeModel->where('id', $employeeData['id'])->set($updateData)->update();
|
|
|
|
if ($updated) {
|
|
$this->callThirdPartyAPI($json, 'forgotMPIN');
|
|
log_message('info', 'MPIN reset successful for employee ID: ' . $employeeData['id']);
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
return $this->respond(['status' => 'success','code' => 200,'message' => 'MPIN reset successfully.' ], 200);
|
|
} else {
|
|
log_message('error', 'Failed to update MPIN fields for employee ID: ' . $employeeData['id']);
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
return $this->respond([
|
|
'status' => 'failed',
|
|
'code' => 500,
|
|
'message' => 'Could not reset MPIN values.',
|
|
], 500);
|
|
}
|
|
} else {
|
|
// Step 4: Not found in local DB — call external fallback
|
|
log_message('warning', 'Employee not found locally. Falling back to third-party API.');
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
return $this->callThirdPartyAPI($json, 'forgotMPIN');
|
|
}
|
|
} catch (\Throwable $e) {
|
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - Exception: " . $e->getMessage() . " --- Line: " . $e->getLine() . " --- Trace: " . $e->getTraceAsString());
|
|
log_message('error', ' ');
|
|
log_message('error', '************************ PRE END ********************************');
|
|
return $this->respond(['status' => 'failed','code' => 500,'message' => 'Server error: ' . $e->getMessage() ], 500);
|
|
}
|
|
}
|
|
|
|
public function logHrActivity()
|
|
{
|
|
$log_data = $this->request->getJSON();
|
|
$postDB = \Config\Database::connect('postDB');
|
|
// print_r($json);die();
|
|
$postDB->table('user_activity_history')->insert($log_data);
|
|
return $this->respond(['status' => 'success','code' => 200,'data' => "logged",],200);
|
|
|
|
}
|
|
|
|
} |