FIX_InsurerMasterAdditAlerts

This commit is contained in:
sanjeev.p 2026-02-02 17:44:25 +05:30
parent 08f7a2e04b
commit b1222d1291
2 changed files with 73 additions and 21 deletions

View File

@ -497,6 +497,9 @@ class MasterController extends AdminController
{ {
$this->myLogger->logme('error','Edit Insurer general info function called'); $this->myLogger->logme('error','Edit Insurer general info function called');
$postData = $this->request->getPost();
$logoFile = $this->request->getFile('insurer_logo');
$rules = [ $rules = [
'name' => [ 'name' => [
'rules' => 'required', 'rules' => 'required',
@ -513,22 +516,30 @@ class MasterController extends AdminController
] ]
], ],
'insurer_logo' => [ 'insurer_logo' => [
'rules' => 'if_exist|is_image[insurer_logo]|max_size[insurer_logo,200]|ext_in[insurer_logo,jpg,jpeg,png]', 'rules' => 'permit_empty|is_image[insurer_logo]|max_size[insurer_logo,200]|ext_in[insurer_logo,jpg,jpeg,png]',
'errors' => [ 'errors' => [
'is_image' => 'The uploaded file must be an image', 'is_image' => 'The uploaded file must be an image',
'max_size' => 'File size should not exceed 200 KB', 'max_size' => 'File size should not exceed 200 KB',
'ext_in' => 'Allowed file types: jpg, jpeg, png', 'ext_in' => 'Only JPG, JPEG, and PNG files are allowed.',
] ]
], ],
]; ];
if (!$this->validate($rules)) { if (!$this->validateData($postData, $rules)) {
return $this->response->setStatusCode(400)->setJSON([ $errors = $this->validator->getErrors();
'status' => false,
'message' => 'Input validation failed', $mainMessage = 'Input validation failed';
'code' => 400,
'errors' => $this->validator->getErrors() if (isset($errors['insurer_logo']) && (strpos($errors['insurer_logo'], 'Security') !== false || strpos($errors['insurer_logo'], 'Forbidden') !== false)) {
]); $mainMessage = 'File upload rejected: Security policy violation.';
}
return $this->response->setStatusCode(400)->setJSON([
'status' => false,
'message' => $mainMessage, // This will change based on the error
'code' => 400,
'errors' => $this->validator->getErrors()
]);
} }
$uploadFilePath = ROOTPATH . 'public/uploads/logo/'; $uploadFilePath = ROOTPATH . 'public/uploads/logo/';

View File

@ -191,18 +191,29 @@ input:checked + .slider:before {
<script> <script>
$(document).ready(function() { $(document).ready(function() {
$('#insurer_logo').on('change', function() {
PreviewImage();
});
$("#insurer_general_form").submit(function(events) { $("#insurer_general_form").submit(function(events) {
events.preventDefault(); events.preventDefault();
var isValid = $('#insurer_General_PrimaryKey').parsley().validate(); // var isValid = $('#insurer_General_PrimaryKey').parsley().validate();
var isValid = $('#insurer_general_form').parsley().validate();
var PrimaryKey = $('#insurer_General_PrimaryKey').val();
if (!isValid) { if (!isValid) {
console.log('Form is Empty', 'Warning'); console.log('Form is Empty', 'Warning');
return ; return ;
} }
var PrimaryKey = $('#insurer_General_PrimaryKey').val(); var formElement = $('#insurer_general_form')[0];
var form_action = ''; var formData = new FormData(formElement);
// DEBUG: Log formData to see if it's empty
for (var pair of formData.entries()) {
console.log(pair[0]+ ', ' + pair[1]);
}
if (isValid) { if (isValid) {
if (PrimaryKey === '') { if (PrimaryKey === '') {
@ -300,16 +311,46 @@ input:checked + .slider:before {
}); });
function PreviewImage() function PreviewImage() {
{ var fileInput = document.getElementById("insurer_logo");
var preview = document.getElementById("uploadPreview");
var defaultAvatar = '<?= base_url() . "public/assets/images/avatar_2x.png" ?>';
// If no file is selected (or cleared by validation), reset preview and stop
if (!fileInput.files || !fileInput.files[0]) {
preview.src = defaultAvatar;
return;
}
var file = fileInput.files[0];
var fileName = file.name.toLowerCase();
var parts = fileName.split('.');
// VALIDATION: Extensions and Double Extensions (e.g. .php.jpeg)
var allowedExtensions = /(\.jpg|\.jpeg|\.png)$/i;
if (!allowedExtensions.exec(fileName) || parts.length > 2) {
toastr.error("Security violation: Invalid format or double extension.", "Blocked");
fileInput.value = ""; // Clear the field
preview.src = defaultAvatar; // RESET PREVIEW
return;
}
// VALIDATION: Size (200KB)
if ((file.size / 1024) > 200) {
toastr.warning("File size exceeds 200 KB limit.", "Warning");
fileInput.value = ""; // Clear the field
preview.src = defaultAvatar; // RESET PREVIEW
return;
}
// SUCCESS: Read and Preview
var oFReader = new FileReader(); var oFReader = new FileReader();
oFReader.readAsDataURL(document.getElementById("insurer_logo").files[0]); oFReader.readAsDataURL(file);
oFReader.onload = function(oFREvent) { oFReader.onload = function(oFREvent) {
document.getElementById("uploadPreview").src = oFREvent.target.result; preview.src = oFREvent.target.result;
}; };
}; }
//----------------------------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------------------------