diff --git a/app/Config/Filters.php b/app/Config/Filters.php
index 9f28a05..0042bda 100755
--- a/app/Config/Filters.php
+++ b/app/Config/Filters.php
@@ -19,6 +19,7 @@ use App\Filters\Cors;
use App\Filters\GlobalPostFileUploadGuard;
use App\Filters\SecurityInputFilter;
use App\Filters\AclFilter;
+use App\Filters\RateLimitFilter;
@@ -47,6 +48,7 @@ class Filters extends BaseConfig
'GlobalPostFileUploadGuard' => GlobalPostFileUploadGuard::class,
'SecurityInputFilter' => SecurityInputFilter::class,
'AclFilter' => AclFilter::class,
+ 'ratelimit' => RateLimitFilter::class,
];
diff --git a/app/Config/Routes.php b/app/Config/Routes.php
index f61965e..a0eb3e0 100755
--- a/app/Config/Routes.php
+++ b/app/Config/Routes.php
@@ -442,7 +442,7 @@ $routes->cli('cli/check_env', 'MasterController::checkEnv');
-$routes->group("/api", ["filter" => "authJWT"], function ($routes) {
+$routes->group("/api", ["filter" => [ 'ratelimit' , 'authJWT' ] ], function ($routes) {
$routes->post("logined", "RestAuthenticationController::logined");
$routes->post("getId", "RestAuthenticationController::getUserIdFromToken");
});
@@ -454,7 +454,7 @@ $routes->group("/api", ["filter" => "authJWT"], function ($routes) {
// $routes->post("employeeRest/createOrUpdateEmployeePolicySiAmount", "EmployeeRestController::createOrUpdateEmployeePolicySiAmount");
// $routes->post("employeeRest/calculatePremium", "EmployeeRestController::calculatePremium");
// $routes->post("updateMpin", "RestAuthenticationController::updateMpin");
-$routes->group("employeeRest", ['filter' => ['GlobalPostFileUploadGuard', 'appSignature' , 'authJWT'] ], function ($routes) {
+$routes->group("employeeRest", ['filter' => [ 'GlobalPostFileUploadGuard', 'ratelimit' , 'appSignature' , 'authJWT' ] ], function ($routes) {
$routes->post('logout', 'RestAuthenticationController::logout');
@@ -507,7 +507,7 @@ $routes->group("employeeRest", ['filter' => ['GlobalPostFileUploadGuard', 'appSi
});
-$routes->group("employeeRest", ['filter' => ['appSignature'] ], function ($routes) {
+$routes->group("employeeRest", ['filter' => ['ratelimit' , 'appSignature'] ], function ($routes) {
//Employee login api's
$routes->post("verifyEmployeeNumber", "RestAuthenticationController::verifyEmployeeWithMobileNumber");
@@ -540,7 +540,7 @@ $routes->group("employeeRest", ['filter' => ['appSignature'] ], function ($route
});
-$routes->post("getPreEmployeePolicyCount","EmployeeRestController::getPreEmployeePolicyCount", ['filter' => ['appSignature']]);
+$routes->post("getPreEmployeePolicyCount","EmployeeRestController::getPreEmployeePolicyCount", ['filter' => ['ratelimit','appSignature']]);
$routes->get("getEmployeeActiveOrInactivePolicy", "EmployeeRestController::getEmployeeActiveOrInactivePolicy");
$routes->get("sendPushNotification", "EmployeeRestController::sendPushNotification");
diff --git a/app/Controllers/EmployeeController.php b/app/Controllers/EmployeeController.php
index 17bd959..0f40f94 100755
--- a/app/Controllers/EmployeeController.php
+++ b/app/Controllers/EmployeeController.php
@@ -180,9 +180,13 @@ class EmployeeController extends AdminController
//handles employee & dependent bulk upload with events like inception,addition,deletion, correction and SI enhancements
public function employeesUplodWithEvents($post_data = [])
- {
+ {
if(empty($post_data)){
$post_data = $this->request->getPost();
+ $post_data = array_merge($post_data, $this->request->getFiles());
+ $is_post_request = true;
+ }else{
+ $is_post_request = false;
}
// $empDataServiceController = new EmpDataServiceController();
@@ -339,7 +343,7 @@ class EmployeeController extends AdminController
$avatar = isset($post_data['emplist']) ? $post_data['emplist'] : $this->request->getFile('emplist');
if (!$avatar) {
$this->myLogger->logme("error", 'File not found');
- if (!empty($post_data)) {
+ if (!$is_post_request) {
return ['status' => false, 'message' => 'File not found'];
} else {
return $this->respond(['dataStatus' => false, 'code' => 400, 'message' => 'File not found'], 400);
@@ -355,7 +359,7 @@ class EmployeeController extends AdminController
$this->myLogger->logme("error", 'File move successful');
} else {
$this->myLogger->logme("error", 'File move failed');
- if (!empty($post_data)) {
+ if (!$is_post_request) {
return ['status' => false, 'message' => 'File move failed'];
} else {
return $this->respond(['dataStatus' => false, 'code' => 500, 'message' => 'File move failed'], 500);
@@ -363,7 +367,7 @@ class EmployeeController extends AdminController
}
} else {
$this->myLogger->logme("error", 'Upload failed Invalid file');
- if (!empty($post_data)) {
+ if (!$is_post_request) {
return ['status' => false, 'message' => 'Invalid file'];
} else {
return $this->respond(['dataStatus' => false, 'code' => 404, 'message' => 'Invalid file'], 404);
@@ -385,7 +389,7 @@ class EmployeeController extends AdminController
$client_id = $post_data['client_id'] ?? null;
$policy_id = $post_data['policy_id'] ?? null;
$branch_id = $post_data['client_branch_id'] ?? null;
- $action = $post_data['file_action'] ?? null;
+ $action = "enrollment";
$enrollment_open_date = $post_data['enrollment_open_date'] ?? null;
$enrollment_close_date = $post_data['enrollment_close_date'] ?? null;
$status = 'inprogress';
@@ -405,7 +409,7 @@ class EmployeeController extends AdminController
$this->myLogger->logme("error", '{file_id} is less than 1MB, validating on the fly', ['file_id' => $file_id]);
//endof validation process
if (isset($result['error_summary']) && count($result['error_summary'])) {
- if(!empty($post_data)){
+ if(!$is_post_request){
return ['status' => false, 'message' => 'file rejected with errors', 'file_id' => $file_id];
}else{
return $this->respond(['dataStatus' => false, 'code' => 404, 'message' => 'file rejected with errors'], 200);
@@ -418,7 +422,7 @@ class EmployeeController extends AdminController
$this->myLogger->logme("error", '{file_id} is greather than 1MB, validating with job queue', ['file_id' => $file_id]);
}
- if (!empty($post_data)) {
+ if (!$is_post_request) {
return ['status' => true, 'message' => 'File upload successs, Data validation is in-progress', 'file_id' => $file_id];
} else {
return $this->respond(['dataStatus' => true, 'code' => 200, 'data' => 'file upload success'], 200);
@@ -507,7 +511,7 @@ class EmployeeController extends AdminController
// dd($data['fileList']);die();
- if ($_SERVER('REQUEST_METHOD') == "GET") {
+ if ($_SERVER['REQUEST_METHOD'] == "GET") {
$this->loadLayout('import_export', $data);
}
}
diff --git a/app/Controllers/EmployeeRestController.php b/app/Controllers/EmployeeRestController.php
index aa7cd9e..ad822a1 100755
--- a/app/Controllers/EmployeeRestController.php
+++ b/app/Controllers/EmployeeRestController.php
@@ -4245,13 +4245,13 @@ class EmployeeRestController extends AdminController
$file_id = $this->request->getGet('id') ?? $id;
// Find record
- $record = $this->hrFileUploadModel->find($file_id);
+ $record = $this->fileModel->where('id', $file_id)->first();
if (!$record) {
return $this->failNotFound("File record not found");
}
- $uploadPath = WRITEPATH . 'uploads/hr_files/';
+ $uploadPath = WRITEPATH . 'uploads/excel/';
$filePath = $uploadPath . $record['file_name'];
if (!file_exists($filePath)) {
@@ -4259,8 +4259,8 @@ class EmployeeRestController extends AdminController
}
// Force file download
- return $this->response->download($filePath, null)
- ->setFileName($record['file_name']);
+ return $this->response->download($filePath, null)->setFileName($record['file_name']);
+
} catch (\Exception $e) {
return $this->failServerError($e->getMessage());
}
diff --git a/app/Filters/Cors.php b/app/Filters/Cors.php
index bb8d5b8..c9ea212 100644
--- a/app/Filters/Cors.php
+++ b/app/Filters/Cors.php
@@ -38,7 +38,7 @@ class Cors implements FilterInterface
*
* @var string
*/
- protected string $allowedMethods = 'GET,POST,PUT,PATCH,DELETE,OPTIONS';
+ protected string $allowedMethods = 'GET,POST,OPTIONS';
/**
* HTTP headers allowed in CORS requests
diff --git a/app/Filters/RateLimitFilter.php b/app/Filters/RateLimitFilter.php
new file mode 100644
index 0000000..31efe81
--- /dev/null
+++ b/app/Filters/RateLimitFilter.php
@@ -0,0 +1,34 @@
+getIPAddress());
+
+ if ($throttler->check($key, 25, MINUTE) === false) {
+ return service('response')
+ ->setStatusCode(429)
+ ->setJSON([
+ 'status' => 'error',
+ 'message' => 'Too many requests. Try again later.'
+ ]);
+ }
+ }
+
+
+ public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
+ {
+ // nothing
+ }
+}
diff --git a/app/Helpers/JWTToken.php b/app/Helpers/JWTToken.php
index d110444..f7b32ba 100755
--- a/app/Helpers/JWTToken.php
+++ b/app/Helpers/JWTToken.php
@@ -31,16 +31,16 @@ class JWTToken
try{
$token = JWT::encode($request_data ,$secret_Key,'HS512');
$id = $request_data['id'];
- $data["token_time_out"] = time() + getenv('TOKENTIMEOUT');
+ $update["token_time_out"] = time() + getenv('TOKENTIMEOUT');
if(isset($data['emp_code'])){
$model = new EmployeeModel();
- $model->update($id, $data);
+ $model->update($id, $update);
}else{
$models = new LevelContactModel();
$id = $request_data['pre_hr_id'];
- $models->update($id, $data);
+ $models->update($id, $update);
}
diff --git a/app/Views/layout/header.php b/app/Views/layout/header.php
index 586695f..7bd6b71 100755
--- a/app/Views/layout/header.php
+++ b/app/Views/layout/header.php
@@ -51,7 +51,7 @@
-
+
@@ -59,7 +59,7 @@
-
+