FEAT_EMP_SELF_MOBILE_NUMBER_UPDATE_API
This commit is contained in:
parent
c678309aa9
commit
c24104ae75
@ -869,6 +869,7 @@ class RestAuthenticationController extends AdminController
|
||||
return $this->respond(['status' => 'failed','code' => 404,'data' => $result],200);
|
||||
|
||||
}
|
||||
|
||||
} catch (\Throwable $th) {
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - saveMpin: Exception: " . $th->getMessage() . " --- Line: " . $th->getLine() . " --- Trace: " . $th->getTraceAsString());
|
||||
log_message('error', ' ');
|
||||
@ -1496,4 +1497,460 @@ class RestAuthenticationController extends AdminController
|
||||
return $this->fail("Invalid Token: " . $e->getMessage(), 401);
|
||||
}
|
||||
}
|
||||
|
||||
// -------------- PASSWORD API'S -------------------------------------------------------------------------------------------------------------
|
||||
|
||||
public function savePassword()
|
||||
{
|
||||
log_message('error', ' ');
|
||||
log_message('error', ' ************************************* POST START **************************************** ');
|
||||
log_message('error', ' ');
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - savePassword: Function called");
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - savePassword: Received payload = " . json_encode($this->request->getJSON() ?? []));
|
||||
|
||||
try {
|
||||
|
||||
$payload = $this->request->getJSON();
|
||||
$mobile_number = $payload->mobile_number ?? null;
|
||||
$email_id = $payload->email_id ?? null;
|
||||
$client_id = $payload->client_id ?? null;
|
||||
$plain_password = $payload->password ?? null;
|
||||
|
||||
if (empty($plain_password)) {
|
||||
return $this->respond(['status' => 'failed', 'code' => 400, 'message' => 'Password cannot be empty'], 400);
|
||||
}
|
||||
|
||||
// Build employee query
|
||||
if ($mobile_number) {
|
||||
|
||||
$builder = $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', ['active', 'expired'])
|
||||
->where('employees.is_active', 1)
|
||||
->whereIn('employees.emp_status', ['active', 'expired']);
|
||||
if (!empty($client_id)) $builder->where('employees.client_id', $client_id);
|
||||
$employeeData = $builder->orderBy('employees.id', 'desc')->first();
|
||||
|
||||
} else {
|
||||
|
||||
$builder = $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', ['active', 'expired'])
|
||||
->where('employees.is_active', 1)
|
||||
->whereIn('employees.emp_status', ['active', 'expired']);
|
||||
if (!empty($client_id)) $builder->where('employees.client_id', $client_id);
|
||||
$employeeData = $builder->orderBy('employees.id', 'desc')->first();
|
||||
|
||||
}
|
||||
|
||||
$lastQuery = $this->employeeModel->db->getLastQuery();
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - savePassword: Last Executed Query: " . $lastQuery);
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - savePassword: employeeData: " . json_encode($employeeData ?? []));
|
||||
|
||||
if ($employeeData) {
|
||||
$id = $employeeData['id'];
|
||||
$hashedPassword = password_hash($plain_password, PASSWORD_DEFAULT);
|
||||
|
||||
$updateData = [
|
||||
'password' => $hashedPassword,
|
||||
];
|
||||
|
||||
$updated = $this->employeeModel->where('id', $id)->set($updateData)->update();
|
||||
|
||||
if ($updated) {
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - savePassword: Password saved successfully");
|
||||
$result = ['user_verification' => true, 'message' => "Password saved successfully"];
|
||||
return $this->respond(['status' => 'success', 'code' => 200, 'data' => $result], 200);
|
||||
} else {
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - savePassword: Password save failed");
|
||||
$result = ['user_verification' => true, 'message' => "Password not saved"];
|
||||
return $this->respond(['status' => 'failed', 'code' => 500, 'data' => $result], 200);
|
||||
}
|
||||
} else {
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - savePassword: Employee not found");
|
||||
$result = ['user_verification' => false, 'message' => "User not found"];
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => $result], 200);
|
||||
}
|
||||
} catch (\Throwable $th) {
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - savePassword: Exception: " . $th->getMessage() . " --- Line: " . $th->getLine() . " --- Trace: " . $th->getTraceAsString());
|
||||
return $this->respond(['status' => 'failed', 'code' => 500, 'message' => $th->getMessage()], 500);
|
||||
}
|
||||
}
|
||||
|
||||
public function changePassword()
|
||||
{
|
||||
log_message('error', ' ');
|
||||
log_message('error', ' ************************************* CHANGE PASSWORD START **************************************** ');
|
||||
log_message('error', ' ');
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - changePassword: Function called");
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - changePassword: Received payload = " . json_encode($this->request->getJSON() ?? []));
|
||||
|
||||
try {
|
||||
$payload = $this->request->getJSON(true);
|
||||
|
||||
$mobile_number = $payload['mobile_number'] ?? null;
|
||||
$email_id = $payload['email_id'] ?? null;
|
||||
$client_id = $payload['client_id'] ?? null;
|
||||
$otp = $payload['otp'] ?? null;
|
||||
$new_password = $payload['new_password'] ?? null;
|
||||
|
||||
if (empty($otp) || empty($new_password)) {
|
||||
return $this->respond([
|
||||
'status' => 'failed',
|
||||
'code' => 400,
|
||||
'message' => 'OTP and new password are required'
|
||||
], 400);
|
||||
}
|
||||
|
||||
// Fetch employee details
|
||||
$builder = $this->employeeModel
|
||||
->select('employees.*')
|
||||
->join('employee_polices', 'employees.id = employee_polices.employee_id')
|
||||
->where('employees.relationship', 'Self')
|
||||
->where('employees.is_active', 1)
|
||||
->whereIn('employees.emp_status', ['active'])
|
||||
->where('employee_polices.is_active', 1)
|
||||
->whereIn('employee_polices.status', ['active']);
|
||||
|
||||
if (!empty($client_id)) $builder->where('employees.client_id', $client_id);
|
||||
|
||||
if ($mobile_number) {
|
||||
$builder->where('employees.mobile', $mobile_number);
|
||||
} elseif ($email_id) {
|
||||
$builder->where('employees.email_corporate', $email_id);
|
||||
} else {
|
||||
return $this->respond([
|
||||
'status' => 'failed',
|
||||
'code' => 400,
|
||||
'message' => 'Mobile number or Email ID is required'
|
||||
], 400);
|
||||
}
|
||||
|
||||
$employeeData = $builder->orderBy('employees.id', 'desc')->first();
|
||||
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - changePassword: employeeData: " . json_encode($employeeData ?? []));
|
||||
|
||||
if (!$employeeData) {
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'message' => 'User not found'], 404);
|
||||
}
|
||||
|
||||
// Check OTP validity (assuming fields: otp, otp_expiry exist)
|
||||
if (empty($employeeData['otp']) || $employeeData['otp'] != $otp) {
|
||||
return $this->respond(['status' => 'failed', 'code' => 401, 'message' => 'Invalid OTP'], 200);
|
||||
}
|
||||
|
||||
if (!empty($employeeData['otp_expiry']) && strtotime($employeeData['otp_expiry']) < time()) {
|
||||
return $this->respond(['status' => 'failed', 'code' => 401, 'message' => 'OTP expired'], 200);
|
||||
}
|
||||
|
||||
// Hash new password
|
||||
$newHashedPassword = password_hash($new_password, PASSWORD_DEFAULT);
|
||||
|
||||
// Update password and clear OTP
|
||||
$updated = $this->employeeModel->update($employeeData['id'], [
|
||||
'password' => $newHashedPassword,
|
||||
'otp' => null,
|
||||
]);
|
||||
|
||||
if ($updated) {
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - changePassword: Password updated successfully");
|
||||
log_message('error', ' ');
|
||||
log_message('error', ' ************************************* CHANGE PASSWORD END **************************************** ');
|
||||
log_message('error', ' ');
|
||||
|
||||
return $this->respond([
|
||||
'status' => 'success',
|
||||
'code' => 200,
|
||||
'message' => 'Password changed successfully'
|
||||
], 200);
|
||||
} else {
|
||||
return $this->respond([
|
||||
'status' => 'failed',
|
||||
'code' => 500,
|
||||
'message' => 'Failed to update password'
|
||||
], 500);
|
||||
}
|
||||
|
||||
} catch (\Throwable $th) {
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - changePassword: Exception: " . $th->getMessage());
|
||||
log_message('error', ' ');
|
||||
log_message('error', ' ************************************* CHANGE PASSWORD END **************************************** ');
|
||||
log_message('error', ' ');
|
||||
return $this->respond(['status' => 'failed', 'code' => 500, 'message' => $th->getMessage()], 500);
|
||||
}
|
||||
}
|
||||
|
||||
public function verifyPassword()
|
||||
{
|
||||
log_message('error', ' ');
|
||||
log_message('error', ' ************************************* POST START **************************************** ');
|
||||
log_message('error', ' ');
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - Verify Password: Function called");
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyPassword: Received payload = " . json_encode($this->request->getJSON() ?? []));
|
||||
|
||||
try {
|
||||
$requestData = $this->request->getJSON(true);
|
||||
|
||||
$mobile_number = $requestData['mobile_number'] ?? null;
|
||||
$email_id = $requestData['email_id'] ?? null;
|
||||
$password = $requestData['password'] ?? null;
|
||||
$client_id = $requestData['client_id'] ?? null;
|
||||
|
||||
if (!$password) {
|
||||
return $this->respond(['status' => 'failed', 'code' => 400, 'data' => "", 'message' => 'Password is required'], 400);
|
||||
}
|
||||
|
||||
// 🔹 Fetch employee data
|
||||
if ($mobile_number) {
|
||||
$builder = $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', ['active'])
|
||||
->where('employees.is_active', 1)
|
||||
->whereIn('employees.emp_status', ['active']);
|
||||
|
||||
if (!empty($client_id)) {
|
||||
$builder->where('employees.client_id', $client_id);
|
||||
}
|
||||
|
||||
$employeeData = $builder->orderBy('employees.id', 'desc')->first();
|
||||
} elseif ($email_id) {
|
||||
$builder = $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', ['active'])
|
||||
->where('employees.is_active', 1)
|
||||
->whereIn('employees.emp_status', ['active']);
|
||||
|
||||
if (!empty($client_id)) {
|
||||
$builder->where('employees.client_id', $client_id);
|
||||
}
|
||||
|
||||
$employeeData = $builder->orderBy('employees.id', 'desc')->first();
|
||||
} else {
|
||||
return $this->respond(['status' => 'failed', 'code' => 400, 'data' => "", 'message' => 'Mobile number or Email ID is required'], 400);
|
||||
}
|
||||
|
||||
$lastQuery = $this->employeeModel->db->getLastQuery();
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyPassword: Last Executed Query: " . $lastQuery);
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyPassword: employeeData: " . json_encode($employeeData ?? []));
|
||||
|
||||
// 🔹 Verify password hash
|
||||
if ($employeeData && isset($employeeData['password']) && password_verify($password, $employeeData['password'])) {
|
||||
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyPassword: Verified employee found");
|
||||
|
||||
// ✅ Log authentication info
|
||||
$auth = HttpRequestHelper::getRequestInfo();
|
||||
if ($auth) {
|
||||
$this->authHistoryModel->insert([
|
||||
'user_id' => $employeeData['id'],
|
||||
'user_type' => 'employee',
|
||||
'ip' => $auth['ip'],
|
||||
'platform' => $auth['platform'],
|
||||
'broswer' => $auth['browser'],
|
||||
]);
|
||||
}
|
||||
|
||||
// ✅ Generate JWT token
|
||||
$employeeData['token_type'] = "post";
|
||||
$token = JWTToken::encode($employeeData);
|
||||
|
||||
log_message('error', ' ');
|
||||
log_message('error', ' ************************************* POST END **************************************** ');
|
||||
log_message('error', ' ');
|
||||
|
||||
return $this->respond(['status' => 'success', 'code' => 200, 'data' => $token], 200);
|
||||
} else {
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyPassword: Invalid password or employee not found");
|
||||
log_message('error', ' ');
|
||||
log_message('error', ' ************************************* POST END **************************************** ');
|
||||
log_message('error', ' ');
|
||||
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => "", 'message' => 'Invalid password'], 200);
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - verifyPassword: Exception: " . $e->getMessage() . " --- Line: " . $e->getLine());
|
||||
log_message('error', ' ');
|
||||
log_message('error', ' ************************************* POST END **************************************** ');
|
||||
log_message('error', ' ');
|
||||
return $this->respond(['status' => 'failed', 'code' => 500, 'data' => "", 'message' => $e->getMessage()], 500);
|
||||
}
|
||||
}
|
||||
|
||||
public function sendChangePasswordOTP()
|
||||
{
|
||||
log_message('error', ' ');
|
||||
log_message('error', ' ************************************* SEND OTP START **************************************** ');
|
||||
log_message('error', ' ');
|
||||
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - sendChangePasswordOTP: Function called");
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - sendChangePasswordOTP: Received payload = " . json_encode($this->request->getJSON() ?? []));
|
||||
|
||||
try {
|
||||
$requestData = $this->request->getJSON(true);
|
||||
|
||||
$email_id = $requestData['email_id'] ?? null;
|
||||
$client_id = $requestData['client_id'] ?? null;
|
||||
|
||||
if (!$email_id) {
|
||||
return $this->respond(['status' => 'failed', 'code' => 400, 'data' => "", 'message' => 'Email ID is required'], 400);
|
||||
}
|
||||
|
||||
// Get employee details
|
||||
$builder = $this->employeeModel
|
||||
->select('employees.id, employees.mobile, employees.email_corporate, employees.client_id')
|
||||
->join('employee_polices', 'employees.id = employee_polices.employee_id')
|
||||
->where('employees.is_active', 1)
|
||||
->whereIn('employees.emp_status', ['active'])
|
||||
->where('employee_polices.is_active', 1)
|
||||
->whereIn('employee_polices.status', ['active'])
|
||||
->where('employees.relationship', 'Self');
|
||||
|
||||
if (!empty($client_id)) {
|
||||
$builder->where('employees.client_id', $client_id);
|
||||
}
|
||||
|
||||
if ($email_id) {
|
||||
$builder->where('employees.email_corporate', $email_id);
|
||||
}
|
||||
|
||||
$employeeData = $builder->orderBy('employees.id', 'desc')->first();
|
||||
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - sendChangePasswordOTP: Employee Data: " . json_encode($employeeData ?? []));
|
||||
|
||||
if (!$employeeData) {
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => "", 'message' => 'Employee not found'], 404);
|
||||
}
|
||||
|
||||
// Generate 6-digit OTP
|
||||
$otp = rand(100000, 999999);
|
||||
|
||||
// Save OTP to DB (assuming 'otp' and 'otp_expiry' columns exist)
|
||||
$this->employeeModel->update($employeeData['id'], [
|
||||
'otp' => $otp,
|
||||
]);
|
||||
|
||||
// Send OTP via SMS or Email (you can replace with your actual helper)
|
||||
if ($email_id) {
|
||||
// Example: MailHelper::sendMail($email_id, 'Password Change OTP', "Your OTP is {$otp}");
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - sendChangePasswordOTP: OTP {$otp} sent to email {$email_id}");
|
||||
}
|
||||
|
||||
log_message('error', ' ');
|
||||
log_message('error', ' ************************************* SEND OTP END **************************************** ');
|
||||
log_message('error', ' ');
|
||||
|
||||
return $this->respond(['status' => 'success', 'code' => 200, 'data' => ['otp_sent_to' => $email_id], 'message' => 'OTP sent successfully'], 200);
|
||||
} catch (\Exception $e) {
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - sendChangePasswordOTP: Exception: " . $e->getMessage() . " --- Line: " . $e->getLine());
|
||||
log_message('error', ' ');
|
||||
log_message('error', ' ************************************* SEND OTP END **************************************** ');
|
||||
log_message('error', ' ');
|
||||
return $this->respond(['status' => 'failed', 'code' => 500, 'data' => "", 'message' => $e->getMessage()], 500);
|
||||
}
|
||||
}
|
||||
|
||||
// -------------- EMP MOBILE NUMBER UPDATE API'S -------------------------------------------------------------------------------------------------------------
|
||||
|
||||
public function updateMobileNumber()
|
||||
{
|
||||
log_message('error', ' ');
|
||||
log_message('error', ' ************************************* UPDATE MOBILE START **************************************** ');
|
||||
log_message('error', ' ');
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - updateMobileNumber: Function called");
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - updateMobileNumber: Received payload = " . json_encode($this->request->getJSON() ?? []));
|
||||
|
||||
try {
|
||||
|
||||
$payload = $this->request->getJSON(true);
|
||||
|
||||
$email_id = $payload['email_id'] ?? null;
|
||||
$client_id = $payload['client_id'] ?? null;
|
||||
$new_mobile = $payload['new_mobile_number'] ?? null;
|
||||
|
||||
if (empty($email_id) || empty($new_mobile)) {
|
||||
return $this->respond([
|
||||
'status' => 'failed',
|
||||
'code' => 400,
|
||||
'message' => 'Email ID and new mobile number are required'
|
||||
], 400);
|
||||
}
|
||||
|
||||
// Fetch employee by email
|
||||
$builder = $this->employeeModel
|
||||
->select('employees.*')
|
||||
->join('employee_polices', 'employees.id = employee_polices.employee_id')
|
||||
->where('employees.email_corporate', $email_id)
|
||||
->where('employees.relationship', 'Self')
|
||||
->where('employees.is_active', 1)
|
||||
->whereIn('employees.emp_status', ['active'])
|
||||
->where('employee_polices.is_active', 1)
|
||||
->whereIn('employee_polices.status', ['active']);
|
||||
|
||||
if (!empty($client_id)) {
|
||||
$builder->where('employees.client_id', $client_id);
|
||||
}
|
||||
|
||||
$employeeData = $builder->orderBy('employees.id', 'desc')->first();
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - updateMobileNumber: employeeData: " . json_encode($employeeData ?? []));
|
||||
|
||||
if (!$employeeData) {
|
||||
return $this->respond([
|
||||
'status' => 'failed',
|
||||
'code' => 404,
|
||||
'message' => 'User not found with this Email ID'
|
||||
], 404);
|
||||
}
|
||||
|
||||
// Update mobile number
|
||||
$updated = $this->employeeModel->update($employeeData['id'], [
|
||||
'mobile' => $new_mobile,
|
||||
]);
|
||||
|
||||
if ($updated) {
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - updateMobileNumber: Mobile number updated successfully");
|
||||
log_message('error', ' ');
|
||||
log_message('error', ' ************************************* UPDATE MOBILE END **************************************** ');
|
||||
log_message('error', ' ');
|
||||
|
||||
return $this->respond([
|
||||
'status' => 'success',
|
||||
'code' => 200,
|
||||
'message' => 'Mobile number updated successfully'
|
||||
], 200);
|
||||
} else {
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - updateMobileNumber: Failed to update mobile number");
|
||||
return $this->respond([
|
||||
'status' => 'failed',
|
||||
'code' => 500,
|
||||
'message' => 'Failed to update mobile number'
|
||||
], 500);
|
||||
}
|
||||
} catch (\Throwable $th) {
|
||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - updateMobileNumber: Exception: " . $th->getMessage());
|
||||
log_message('error', ' ');
|
||||
log_message('error', ' ************************************* UPDATE MOBILE END **************************************** ');
|
||||
log_message('error', ' ');
|
||||
return $this->respond([
|
||||
'status' => 'failed',
|
||||
'code' => 500,
|
||||
'message' => $th->getMessage()
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1049,7 +1049,11 @@
|
||||
$nav.find("li:first-child a").addClass("active active-tab");
|
||||
|
||||
// also need to find the tab name and show only active image
|
||||
let tab_name = $nav.find("li:first-child a").attr('href').split('-')[0];
|
||||
// let tab_name = $nav.find("li:first-child a").attr('href').split('-')[0];
|
||||
|
||||
let href = $nav.find("li:first-child a").attr('href');
|
||||
let tab_name = href ? href.split('-')[0] : '';
|
||||
|
||||
tab_name = tab_name.replace('#', '');
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user