Security feedbach : GWM

This commit is contained in:
Gowtham M 2025-10-07 12:33:44 +05:30
parent d863f8ca7b
commit d42d1a475b
5 changed files with 410 additions and 152 deletions

View File

@ -41,140 +41,276 @@ $routes->post('forgotPassword/changePassword', 'UserController::forgotChangePass
}); });
$routes->group('api', ['filter' => ["jwtAuth:Org Admin,Travel Admin,Travel Agent,User","appSignature"] ], function ($routes) {
$routes->get('organizations/find/(:num)', 'OrganizationController::find/$1'); // Org admin, Travel admin, Travel agent,user
$routes->get('users/find/(:num)', 'UserController::find/$1'); // Org admin, Travel admin, Travel agent,user
$routes->post('plans/createOrEditPlan', 'PlanController::createOrEditPlan'); // Org admin, Travel admin, Travel agent,user
$routes->post('plans/getForexPerdiem', 'PlanController::getForexPerdiem'); // Org admin, Travel admin, Travel agent,user
$routes->get('plans/download', 'PlanController::downloadPlan');// Org admin, Travel admin, Travel agent,user
$routes->get('plans/getRemarksByPlanId', 'PlanController::getRemarksByPlanId'); // Org admin, Travel admin, Travel agent,user
$routes->get('plans/forexDownload', 'PlanController::forexDownload'); // Org admin, Travel admin, Travel agent,user
$routes->get('plans/cancle_plan', 'PlanController::canclePlan'); // Org admin, Travel admin, Travel agent,user
$routes->get('plans/get_plan_approval_status', 'PlanController::get_plan_approval_status'); // Org admin, Travel admin, Travel agent,user
$routes->get('plans/planInfo', 'PlanController::planInfo'); // Org admin, Travel admin, Travel agent,user
$routes->get('getCostCenterMaster', 'MasterController::getCostCenterMaster'); // Org admin, Travel admin, Travel agent,user
$routes->get('getRoles', 'UserController::roleList'); // Org admin, Travel admin, Travel agent,user
//Master
$routes->get('getDropdownMaster', 'MasterController::getDropdownMaster'); // Org admin, Travel admin, Travel agent,user
$routes->get('getTravelStatusMaster', 'MasterController::getTravelStatusMaster');
$routes->get('getcountryMaster', 'MasterController::getcountryMaster'); // Org admin, Travel admin, Travel agent,user
$routes->get('getAirportCodeMaster', 'MasterController::getAirportCodeMaster');// Org admin, Travel admin, Travel agent,user
$routes->get('getAirlineMaster', 'MasterController::getAirlineMaster'); // Org admin, Travel admin, Travel agent,user
$routes->get('getTrainCodeMaster', 'MasterController::getTrainCodeMaster');// Org admin, Travel admin, Travel agent,user
$routes->get('getFlightAndTrainClass', 'MasterController::getFlightAndTrainClass');// Org admin, Travel admin, Travel agent,user
$routes->get('user/refreshUserToken', 'AuthController::refreshUserToken');
$routes->get('service', 'OrganizationController::getServices');
$routes->get('groups', 'OrganizationController::getGroups');
$routes->put('groups/group-status/(:num)', 'OrganizationController::updateGroupStatus/$1');
$routes->put('policy/policy-status/(:num)', 'OrganizationController::updatePolicyStatus/$1');
$routes->get('users', 'UserController::index');
$routes->get('agentList', 'UserController::agentList');
$routes->put('user/user-status/(:num)', 'UserController::updateUserStatus/$1');
$routes->get('checkDuplicate', 'UserController::checkDuplicate');
$routes->get('travellers', 'TravellerController::index');
$routes->get('travellers/find/name/(:any)', 'TravellerController::findByName/$1');
$routes->get('travellers/find/email/(:any)', 'TravellerController::findByEmail/$1');
$routes->get('travellers/find/mobile/(:any)', 'TravellerController::findByMobile/$1');
$routes->get('plans', 'PlanController::index');
$routes->put('plans/find/(:num)', 'PlanController::find/$1');
$routes->get('plans/view', 'PlanController::viewPlan');
$routes->get('plans/plan_pdf', 'PlanController::plan_pdf');
$routes->get('plans/plan_policy_action_status', 'PlanController::plan_policy_action_status');
});
$routes->group('api', ['filter' => ["jwtAuth:Org Admin,Travel Admin,User","appSignature"] ], function ($routes) {
$routes->post('travellers/create', 'TravellerController::create'); // Org admin, Travel admin,user
$routes->post('plans/approvePlan', 'PlanController::approvePlan'); // Org admin, Travel admin,user
$routes->post('plans/rejectPlan', 'PlanController::rejectPlan'); // Org admin, Travel admin,user
$routes->get('plans/findApprovalList', 'PlanController::findApprovalList'); // Org admin, Travel admin,user
});
$routes->group('api', ['filter' => ["jwtAuth:Org Admin,Travel Admin","appSignature"] ], function ($routes) {
$routes->get('groups/find/(:num)', 'OrganizationController::findGroup/$1'); // Org admin, Travel admin,
$routes->post('groups/create', 'OrganizationController::createGroup');// Org admin, Travel admin,
$routes->put('groups/update/(:num)', 'OrganizationController::updateGroup/$1');// Org admin, Travel admin,
$routes->get('policy', 'OrganizationController::getPolicy'); // Org admin, Travel admin,
$routes->get('policy/find/(:num)', 'OrganizationController::findPolicy/$1');// Org admin, Travel admin,
$routes->post('policy/createOrUpdate', 'OrganizationController::createOrUpdatePolicy');// Org admin, Travel admin,
$routes->post('users/create', 'UserController::create'); // Org admin, Travel admin,
$routes->put('users/update/(:num)', 'UserController::update/$1'); // Org admin, Travel admin,
$routes->put('user/user-password/(:num)', 'UserController::changePassword/$1'); // Org admin, Travel admin,
$routes->post('user/userUpload','UserController::userUpload'); // Org admin, Travel admin,
$routes->get('user/userUploadTemplate','UserController::userUploadTemplate'); // Org admin, Travel admin,
$routes->get('travellers/find', 'TravellerController::find'); // Org admin, Travel admin,
$routes->put('travellers/update/(:num)', 'TravellerController::update/$1'); // Org admin, Travel admin,
$routes->get('plans/statusDashboard', 'PlanController::statusDashboard'); // Org admin, Travel admin,
$routes->post('createCostCenter', 'MasterController::createCostCenter'); // Org admin, Travel admin,
$routes->get('findCostCenter', 'MasterController::findCostCenter'); // Org admin, Travel admin,
$routes->put('updateCostCenter/(:num)', 'MasterController::updateCostCenter/$1'); // Org admin, Travel admin,
// Department Master
$routes->get('getDepartmentList', 'MasterController::getDepartmentList'); // Org admin, Travel admin,
$routes->post('createDepartment', 'MasterController::createDepartment');// Org admin, Travel admin,
$routes->get('findDepartment', 'MasterController::findDepartment');// Org admin, Travel admin,
$routes->put('updateDepartment/(:num)', 'MasterController::updateDepartment/$1'); // Org admin, Travel admin,
// Purpose of travel Master
$routes->get('getPurposeOfTravelList', 'MasterController::getPurposeOfTravelList'); // Org admin, Travel admin,
$routes->post('createPurposeOfTravel', 'MasterController::createPurposeOfTravel');// Org admin, Travel admin,
$routes->get('findPurposeOfTravel', 'MasterController::findPurposeOfTravel'); // Org admin, Travel admin,
$routes->put('updatePurposeOfTravel/(:num)', 'MasterController::updatePurposeOfTravel/$1');// Org admin, Travel admin,
// Forex Master
$routes->get('getForexPerdiemList', 'MasterController::getForexPerdiemList');
$routes->post('createForexPerdiem', 'MasterController::createForexPerdiem'); // Org admin, Travel admin,
$routes->get('findForexPerdiem', 'MasterController::findForexPerdiem'); // Org admin, Travel admin,
$routes->put('updateForexPerdiem/(:num)', 'MasterController::updateForexPerdiem/$1');// Org admin, Travel admin,
$routes->post('forex_signature_upload', 'MasterController::forex_signature_upload');// Org admin, Travel admin,
$routes->get('getForexSignaturePath', 'MasterController::getForexSignaturePath');// Org admin, Travel admin,
// Hotels Master
$routes->get('getHotels', 'MasterController::getHotels');// Org admin, Travel admin,
$routes->post('createHotels', 'MasterController::createHotels');// Org admin, Travel admin,
$routes->get('findHotels', 'MasterController::findHotels');// Org admin, Travel admin,
$routes->put('updateHotels/(:num)', 'MasterController::updateHotels/$1');// Org admin, Travel admin,
//mail template
$routes->get('template', 'EmailTemplateController::index'); // Org admin, Travel admin,
$routes->put('template/find/(:num)', 'EmailTemplateController::find/$1');// Org admin, Travel admin,
$routes->post('template/create', 'EmailTemplateController::create');// Org admin, Travel admin,
$routes->put('template/update/(:num)', 'EmailTemplateController::update/$1');// Org admin, Travel admin,
$routes->get('getForexTemplate', 'EmailTemplateController::getForexTemplate');// Org admin, Travel admin,
$routes->post('advancePurchaseReport', 'ReportsController::advancePurchaseReport');// Org admin, Travel admin,
$routes->post('misServicesAnalysis', 'ReportsController::misServicesAnalysis');// Org admin, Travel admin,
$routes->post('misAirReport', 'ReportsController::misAirReport');// Org admin, Travel admin,
$routes->post('misHotelReport', 'ReportsController::misHotelReport');// Org admin, Travel admin,
$routes->post('misForexReport', 'ReportsController::misForexReport');// Org admin, Travel admin,
$routes->post('guestHouseReport', 'ReportsController::guestHouseReport');// Org admin, Travel admin,
});
$routes->group('api', ['filter' => ["jwtAuth:Org Admin","appSignature"] ], function ($routes) {
//Organization
$routes->get('organizations', 'OrganizationController::index');
$routes->post('organizations/create', 'OrganizationController::create'); // Org admin,
$routes->put('organizations/update/(:num)', 'OrganizationController::update/$1');// Org admin,
$routes->put('organizations/org-status/(:num)', 'OrganizationController::updateOrganizationStatus/$1');
$routes->post('organizations/testMail', 'OrganizationController::testMail'); // Org admin,
});
$routes->group('api', ['filter' => ["jwtAuth:Travel Agent","appSignature"] ], function ($routes) {
$routes->get('plans/findTravelAgentPlanList', 'PlanController::findTravelAgentPlanList');//Travel agent
$routes->post('plans/addOrEditPlanRemark', 'PlanController::addOrEditPlanRemark');//Travel agent
});
//api's with token //api's with token
$routes->group('api', ['filter' => ["jwtAuth","appSignature"] ], function ($routes) { // $routes->group('api', ['filter' => ["jwtAuth","appSignature"] ], function ($routes) {
$routes->get('user/refreshUserToken', 'AuthController::refreshUserToken'); // $routes->get('user/refreshUserToken', 'AuthController::refreshUserToken');
//Organization // //Organization
$routes->get('organizations', 'OrganizationController::index'); // $routes->get('organizations', 'OrganizationController::index');
$routes->get('organizations/find/(:num)', 'OrganizationController::find/$1'); // $routes->get('organizations/find/(:num)', 'OrganizationController::find/$1');
$routes->post('organizations/create', 'OrganizationController::create'); // $routes->post('organizations/create', 'OrganizationController::create');
$routes->put('organizations/update/(:num)', 'OrganizationController::update/$1'); // $routes->put('organizations/update/(:num)', 'OrganizationController::update/$1');
$routes->put('organizations/org-status/(:num)', 'OrganizationController::updateOrganizationStatus/$1'); // $routes->put('organizations/org-status/(:num)', 'OrganizationController::updateOrganizationStatus/$1');
$routes->post('organizations/testMail', 'OrganizationController::testMail'); // $routes->post('organizations/testMail', 'OrganizationController::testMail');
//Service // //Service
$routes->get('service', 'OrganizationController::getServices'); // $routes->get('service', 'OrganizationController::getServices');
//Group // //Group
$routes->get('groups', 'OrganizationController::getGroups'); // $routes->get('groups', 'OrganizationController::getGroups');
$routes->get('groups/find/(:num)', 'OrganizationController::findGroup/$1'); // $routes->get('groups/find/(:num)', 'OrganizationController::findGroup/$1');
$routes->post('groups/create', 'OrganizationController::createGroup'); // $routes->post('groups/create', 'OrganizationController::createGroup');
$routes->put('groups/update/(:num)', 'OrganizationController::updateGroup/$1'); // $routes->put('groups/update/(:num)', 'OrganizationController::updateGroup/$1');
$routes->put('groups/group-status/(:num)', 'OrganizationController::updateGroupStatus/$1'); // $routes->put('groups/group-status/(:num)', 'OrganizationController::updateGroupStatus/$1');
//Policy // //Policy
$routes->get('policy', 'OrganizationController::getPolicy'); // $routes->get('policy', 'OrganizationController::getPolicy');
$routes->get('policy/find/(:num)', 'OrganizationController::findPolicy/$1'); // $routes->get('policy/find/(:num)', 'OrganizationController::findPolicy/$1');
$routes->post('policy/createOrUpdate', 'OrganizationController::createOrUpdatePolicy'); // $routes->post('policy/createOrUpdate', 'OrganizationController::createOrUpdatePolicy');
$routes->put('policy/policy-status/(:num)', 'OrganizationController::updatePolicyStatus/$1'); // $routes->put('policy/policy-status/(:num)', 'OrganizationController::updatePolicyStatus/$1');
//User // //User
$routes->get('users', 'UserController::index'); // $routes->get('users', 'UserController::index');
$routes->get('agentList', 'UserController::agentList'); // $routes->get('agentList', 'UserController::agentList');
$routes->get('users/find/(:num)', 'UserController::find/$1'); // $routes->get('users/find/(:num)', 'UserController::find/$1');
$routes->post('users/create', 'UserController::create'); // $routes->post('users/create', 'UserController::create');
$routes->put('users/update/(:num)', 'UserController::update/$1'); // $routes->put('users/update/(:num)', 'UserController::update/$1');
$routes->put('user/user-status/(:num)', 'UserController::updateUserStatus/$1'); // $routes->put('user/user-status/(:num)', 'UserController::updateUserStatus/$1');
$routes->put('user/user-password/(:num)', 'UserController::changePassword/$1'); // $routes->put('user/user-password/(:num)', 'UserController::changePassword/$1');
$routes->get('checkDuplicate', 'UserController::checkDuplicate'); // $routes->get('checkDuplicate', 'UserController::checkDuplicate');
$routes->post('user/userUpload','UserController::userUpload'); // $routes->post('user/userUpload','UserController::userUpload');
$routes->get('user/userUploadTemplate','UserController::userUploadTemplate'); // $routes->get('user/userUploadTemplate','UserController::userUploadTemplate');
//Traveller // //Traveller
$routes->get('travellers', 'TravellerController::index'); // $routes->get('travellers', 'TravellerController::index');
$routes->post('travellers/create', 'TravellerController::create'); // $routes->post('travellers/create', 'TravellerController::create');
$routes->get('travellers/find', 'TravellerController::find'); // $routes->get('travellers/find', 'TravellerController::find');
$routes->put('travellers/update/(:num)', 'TravellerController::update/$1'); // $routes->put('travellers/update/(:num)', 'TravellerController::update/$1');
$routes->get('travellers/find/name/(:any)', 'TravellerController::findByName/$1'); // $routes->get('travellers/find/name/(:any)', 'TravellerController::findByName/$1');
$routes->get('travellers/find/email/(:any)', 'TravellerController::findByEmail/$1'); // $routes->get('travellers/find/email/(:any)', 'TravellerController::findByEmail/$1');
$routes->get('travellers/find/mobile/(:any)', 'TravellerController::findByMobile/$1'); // $routes->get('travellers/find/mobile/(:any)', 'TravellerController::findByMobile/$1');
//Plan // //Plan
$routes->get('plans', 'PlanController::index'); // $routes->get('plans', 'PlanController::index');
$routes->put('plans/find/(:num)', 'PlanController::find/$1'); // $routes->put('plans/find/(:num)', 'PlanController::find/$1');
$routes->post('plans/createOrEditPlan', 'PlanController::createOrEditPlan'); // $routes->post('plans/createOrEditPlan', 'PlanController::createOrEditPlan');
$routes->post('plans/getForexPerdiem', 'PlanController::getForexPerdiem'); // $routes->post('plans/getForexPerdiem', 'PlanController::getForexPerdiem');
$routes->post('plans/approvePlan', 'PlanController::approvePlan'); // $routes->post('plans/approvePlan', 'PlanController::approvePlan');
$routes->post('plans/rejectPlan', 'PlanController::rejectPlan'); // $routes->post('plans/rejectPlan', 'PlanController::rejectPlan');
$routes->get('plans/statusDashboard', 'PlanController::statusDashboard'); // $routes->get('plans/statusDashboard', 'PlanController::statusDashboard');
$routes->get('plans/download', 'PlanController::downloadPlan'); // $routes->get('plans/download', 'PlanController::downloadPlan');
$routes->get('plans/view', 'PlanController::viewPlan'); // $routes->get('plans/view', 'PlanController::viewPlan');
$routes->get('plans/findApprovalList', 'PlanController::findApprovalList'); // $routes->get('plans/findApprovalList', 'PlanController::findApprovalList');
$routes->get('plans/findTravelAgentPlanList', 'PlanController::findTravelAgentPlanList'); // $routes->get('plans/findTravelAgentPlanList', 'PlanController::findTravelAgentPlanList');
$routes->post('plans/addOrEditPlanRemark', 'PlanController::addOrEditPlanRemark'); // $routes->post('plans/addOrEditPlanRemark', 'PlanController::addOrEditPlanRemark');
$routes->get('plans/getRemarksByPlanId', 'PlanController::getRemarksByPlanId'); // $routes->get('plans/getRemarksByPlanId', 'PlanController::getRemarksByPlanId');
$routes->get('plans/forexDownload', 'PlanController::forexDownload'); // $routes->get('plans/forexDownload', 'PlanController::forexDownload');
$routes->get('plans/cancle_plan', 'PlanController::canclePlan'); // $routes->get('plans/cancle_plan', 'PlanController::canclePlan');
$routes->get('plans/get_plan_approval_status', 'PlanController::get_plan_approval_status'); // $routes->get('plans/get_plan_approval_status', 'PlanController::get_plan_approval_status');
$routes->get('plans/plan_pdf', 'PlanController::plan_pdf'); // $routes->get('plans/plan_pdf', 'PlanController::plan_pdf');
$routes->get('plans/plan_policy_action_status', 'PlanController::plan_policy_action_status'); // $routes->get('plans/plan_policy_action_status', 'PlanController::plan_policy_action_status');
$routes->get('plans/planInfo', 'PlanController::planInfo'); // $routes->get('plans/planInfo', 'PlanController::planInfo');
//Master // //Master
$routes->get('getDropdownMaster', 'MasterController::getDropdownMaster'); // $routes->get('getDropdownMaster', 'MasterController::getDropdownMaster');
$routes->get('getTravelStatusMaster', 'MasterController::getTravelStatusMaster'); // $routes->get('getTravelStatusMaster', 'MasterController::getTravelStatusMaster');
$routes->get('getcountryMaster', 'MasterController::getcountryMaster'); // $routes->get('getcountryMaster', 'MasterController::getcountryMaster');
$routes->get('getAirportCodeMaster', 'MasterController::getAirportCodeMaster'); // $routes->get('getAirportCodeMaster', 'MasterController::getAirportCodeMaster');
$routes->get('getAirlineMaster', 'MasterController::getAirlineMaster'); // $routes->get('getAirlineMaster', 'MasterController::getAirlineMaster');
$routes->get('getTrainCodeMaster', 'MasterController::getTrainCodeMaster'); // $routes->get('getTrainCodeMaster', 'MasterController::getTrainCodeMaster');
$routes->get('getFlightAndTrainClass', 'MasterController::getFlightAndTrainClass'); // $routes->get('getFlightAndTrainClass', 'MasterController::getFlightAndTrainClass');
// Costcenter // // Costcenter
$routes->get('getCostCenterMaster', 'MasterController::getCostCenterMaster'); // $routes->get('getCostCenterMaster', 'MasterController::getCostCenterMaster');
$routes->post('createCostCenter', 'MasterController::createCostCenter'); // $routes->post('createCostCenter', 'MasterController::createCostCenter');
$routes->get('findCostCenter', 'MasterController::findCostCenter'); // $routes->get('findCostCenter', 'MasterController::findCostCenter');
$routes->put('updateCostCenter/(:num)', 'MasterController::updateCostCenter/$1'); // $routes->put('updateCostCenter/(:num)', 'MasterController::updateCostCenter/$1');
// Department Master // // Department Master
$routes->get('getDepartmentList', 'MasterController::getDepartmentList'); // $routes->get('getDepartmentList', 'MasterController::getDepartmentList');
$routes->post('createDepartment', 'MasterController::createDepartment'); // $routes->post('createDepartment', 'MasterController::createDepartment');
$routes->get('findDepartment', 'MasterController::findDepartment'); // $routes->get('findDepartment', 'MasterController::findDepartment');
$routes->put('updateDepartment/(:num)', 'MasterController::updateDepartment/$1'); // $routes->put('updateDepartment/(:num)', 'MasterController::updateDepartment/$1');
// Purpose of travel Master // // Purpose of travel Master
$routes->get('getPurposeOfTravelList', 'MasterController::getPurposeOfTravelList'); // $routes->get('getPurposeOfTravelList', 'MasterController::getPurposeOfTravelList');
$routes->post('createPurposeOfTravel', 'MasterController::createPurposeOfTravel'); // $routes->post('createPurposeOfTravel', 'MasterController::createPurposeOfTravel');
$routes->get('findPurposeOfTravel', 'MasterController::findPurposeOfTravel'); // $routes->get('findPurposeOfTravel', 'MasterController::findPurposeOfTravel');
$routes->put('updatePurposeOfTravel/(:num)', 'MasterController::updatePurposeOfTravel/$1'); // $routes->put('updatePurposeOfTravel/(:num)', 'MasterController::updatePurposeOfTravel/$1');
// Forex Master // // Forex Master
$routes->get('getForexPerdiemList', 'MasterController::getForexPerdiemList'); // $routes->get('getForexPerdiemList', 'MasterController::getForexPerdiemList');
$routes->post('createForexPerdiem', 'MasterController::createForexPerdiem'); // $routes->post('createForexPerdiem', 'MasterController::createForexPerdiem');
$routes->get('findForexPerdiem', 'MasterController::findForexPerdiem'); // $routes->get('findForexPerdiem', 'MasterController::findForexPerdiem');
$routes->put('updateForexPerdiem/(:num)', 'MasterController::updateForexPerdiem/$1'); // $routes->put('updateForexPerdiem/(:num)', 'MasterController::updateForexPerdiem/$1');
$routes->post('forex_signature_upload', 'MasterController::forex_signature_upload'); // $routes->post('forex_signature_upload', 'MasterController::forex_signature_upload');
$routes->get('getForexSignaturePath', 'MasterController::getForexSignaturePath'); // $routes->get('getForexSignaturePath', 'MasterController::getForexSignaturePath');
// Hotels Master // // Hotels Master
$routes->get('getHotels', 'MasterController::getHotels'); // $routes->get('getHotels', 'MasterController::getHotels');
$routes->post('createHotels', 'MasterController::createHotels'); // $routes->post('createHotels', 'MasterController::createHotels');
$routes->get('findHotels', 'MasterController::findHotels'); // $routes->get('findHotels', 'MasterController::findHotels');
$routes->put('updateHotels/(:num)', 'MasterController::updateHotels/$1'); // $routes->put('updateHotels/(:num)', 'MasterController::updateHotels/$1');
//mail template // //mail template
$routes->get('template', 'EmailTemplateController::index'); // $routes->get('template', 'EmailTemplateController::index');
$routes->put('template/find/(:num)', 'EmailTemplateController::find/$1'); // $routes->put('template/find/(:num)', 'EmailTemplateController::find/$1');
$routes->post('template/create', 'EmailTemplateController::create'); // $routes->post('template/create', 'EmailTemplateController::create');
$routes->put('template/update/(:num)', 'EmailTemplateController::update/$1'); // $routes->put('template/update/(:num)', 'EmailTemplateController::update/$1');
$routes->get('getForexTemplate', 'EmailTemplateController::getForexTemplate'); // $routes->get('getForexTemplate', 'EmailTemplateController::getForexTemplate');
$routes->get('getRoles', 'UserController::roleList'); // $routes->get('getRoles', 'UserController::roleList');
$routes->post('advancePurchaseReport', 'ReportsController::advancePurchaseReport'); // $routes->post('advancePurchaseReport', 'ReportsController::advancePurchaseReport');
$routes->post('misServicesAnalysis', 'ReportsController::misServicesAnalysis'); // $routes->post('misServicesAnalysis', 'ReportsController::misServicesAnalysis');
$routes->post('misAirReport', 'ReportsController::misAirReport'); // $routes->post('misAirReport', 'ReportsController::misAirReport');
$routes->post('misHotelReport', 'ReportsController::misHotelReport'); // $routes->post('misHotelReport', 'ReportsController::misHotelReport');
$routes->post('misForexReport', 'ReportsController::misForexReport'); // $routes->post('misForexReport', 'ReportsController::misForexReport');
$routes->post('guestHouseReport', 'ReportsController::guestHouseReport'); // $routes->post('guestHouseReport', 'ReportsController::guestHouseReport');
}); // });
// plan review related signed url // plan review related signed url

View File

@ -58,39 +58,75 @@ class AuthController extends ResourceController
public function login() public function login()
{ {
$data = $this->request->getJSON();
$rules = [ // Decrypt payload if encryption is enabled (handled in Part 2 below)
'email' => 'required|valid_email', if (isset($data->encrypted) && $data->encrypted === true) {
'password' => 'required' // $data = decryptLoginPayload($data->payload);
];
if (!$this->validate($rules)) { $key = '1234567890123456'; // same as Flutter key
return $this->failValidationErrors($this->validator->getErrors()); $iv = 'abcdefghijklmnop'; // same IV
$cipher = 'AES-128-CBC';
$decrypted = openssl_decrypt(base64_decode($data->payload), $cipher, $key, OPENSSL_RAW_DATA, $iv);
$data = json_decode($decrypted);
} }
$data = $this->request->getJSON();
$user = $this->userModel->where('email', $data->email)->where('is_active',1)->first(); $user = $this->userModel->where('email', $data->email)->where('is_active',1)->first();
// print_r($user);die; // print_r($user);die;
if (!$user) { if (!$user) {
return $this->failUnauthorized('Invalid email or password'); return $this->failUnauthorized('Invalid email or password');
} }
// Verify password (assuming it's hashed) // Check if account is locked
if (!empty($user['lock_until']) && strtotime($user['lock_until']) > time()) {
$remaining = ceil((strtotime($user['lock_until']) - time()) / 60);
return $this->failUnauthorized("Account locked. Try again in {$remaining} minutes.");
}
// If lock time expired, reset it
if (!empty($user['lock_until']) && strtotime($user['lock_until']) <= time()) {
$this->userModel->update($user['user_id'], [
'failed_attempts' => 0,
'lock_until' => null
]);
$user['failed_attempts'] = 0;
$user['lock_until'] = null;
}
// Password verification
if (!password_verify($data->password, $user['password'])) { if (!password_verify($data->password, $user['password'])) {
return $this->failUnauthorized('Invalid email or password'); // Increment failed attempts
$attempts = $user['failed_attempts'] + 1;
$updateData = ['failed_attempts' => $attempts];
// Lock account after 3 wrong attempts
if ($attempts >= 3) {
$updateData['lock_until'] = date('Y-m-d H:i:s', strtotime('+15 minutes'));
$updateData['failed_attempts'] = 0; // reset after lock
} }
//update last login time in last_login_at column $this->userModel->update($user['user_id'], $updateData);
$this->userModel->update($user['user_id'], ['last_login_at' => date('Y-m-d H:i:s')]);
$msg = ($attempts >= 3)
? 'Too many failed attempts. Account locked for 30 minutes.'
: 'Invalid email or password';
return $this->failUnauthorized($msg);
}
// Reset failed attempts after successful login
$this->userModel->update($user['user_id'], [
'failed_attempts' => 0,
'lock_until' => null,
'last_login_at' => date('Y-m-d H:i:s')
]);
// Format date for FE
$user = $this->userModel->where('email', $data->email)->first(); $user = $this->userModel->where('email', $data->email)->first();
if (!empty($user['last_login_at'])) { $user['last_login_at'] = !empty($user['last_login_at'])
$user['last_login_at'] = date('d, M-Y h:iA', strtotime($user['last_login_at'])); ? date('d, M-Y h:iA', strtotime($user['last_login_at']))
} else { : null;
$user['last_login_at'] = null;
}
//get service for the organization //get service for the organization
@ -368,4 +404,9 @@ class AuthController extends ResourceController
//old login code
// public function login() { $rules = [ 'email' => 'required|valid_email', 'password' => 'required' ]; if (!$this->validate($rules)) { return $this->failValidationErrors($this->validator->getErrors()); } $data = $this->request->getJSON(); $user = $this->userModel->where('email', $data->email)->where('is_active',1)->first(); // print_r($user);die; if (!$user) { return $this->failUnauthorized('Invalid email or password'); } // Verify password (assuming it's hashed) if (!password_verify($data->password, $user['password'])) { return $this->failUnauthorized('Invalid email or password'); } //update last login time in last_login_at column $this->userModel->update($user['user_id'], ['last_login_at' => date('Y-m-d H:i:s')]); $user = $this->userModel->where('email', $data->email)->first(); if (!empty($user['last_login_at'])) { $user['last_login_at'] = date('d, M-Y h:iA', strtotime($user['last_login_at'])); } else { $user['last_login_at'] = null; } //get service for the organization $orgService = $this->organizationModel->find($user['org_id']); $user['service'] = json_decode($orgService['services_ids'],true); foreach ($user['service'] as $key => $value) { $serviceData = $this->serviceModel->find($value['service_id']); $user['service'][$key]['name'] = $serviceData['name']; $user['service'][$key]['icon'] = $serviceData['icon']; $user['service'][$key]['order'] = $serviceData['order']; } //get role $user['role'] = $this->userModel->getRole($user['role_id']); //find user has the all access $user['plan_action'] = getUserPlanCreationRestrictionStatus($user); // Generate JWT Token $token = generateJWT($user); return $this->respond([ 'status' => 200, 'message' => 'Login successful', 'token' => $token ]); }
} }

View File

@ -1,5 +1,42 @@
<?php <?php
// namespace App\Filters;
// use CodeIgniter\HTTP\RequestInterface;
// use CodeIgniter\HTTP\ResponseInterface;
// use CodeIgniter\Filters\FilterInterface;
// use Firebase\JWT\JWT;
// use Firebase\JWT\Key;
// class JwtAuthFilter implements FilterInterface
// {
// public function before(RequestInterface $request, $arguments = null)
// {
// helper('jwt_helper');
// $header = $request->getHeaderLine('Authorization');
// if (!$header || !preg_match('/Bearer\s(\S+)/', $header, $matches)) {
// return service('response')->setJSON(['status' => 401, 'message' => 'Token required'])->setStatusCode(401);
// }
// $decodedToken = validateJWT($matches[1]);
// if (!$decodedToken) {
// return service('response')->setJSON(['status' => 401, 'message' => 'Invalid or expired token'])->setStatusCode(401);
// }
// return;
// }
// public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
// {
// // No action needed
// }
// }
namespace App\Filters; namespace App\Filters;
use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\RequestInterface;
@ -7,29 +44,61 @@ use CodeIgniter\HTTP\ResponseInterface;
use CodeIgniter\Filters\FilterInterface; use CodeIgniter\Filters\FilterInterface;
use Firebase\JWT\JWT; use Firebase\JWT\JWT;
use Firebase\JWT\Key; use Firebase\JWT\Key;
use Config\Services;
class JwtAuthFilter implements FilterInterface class JwtAuthFilter implements FilterInterface
{ {
public function before(RequestInterface $request, $arguments = null) public function before(RequestInterface $request, $arguments = null)
{ {
helper('jwt_helper'); helper('jwt_helper');
$response = Services::response();
$header = $request->getHeaderLine('Authorization'); $header = $request->getHeaderLine('Authorization');
// ✅ 1. Check for Bearer token
if (!$header || !preg_match('/Bearer\s(\S+)/', $header, $matches)) { if (!$header || !preg_match('/Bearer\s(\S+)/', $header, $matches)) {
return service('response')->setJSON(['status' => 401, 'message' => 'Token required'])->setStatusCode(401); return $response->setJSON([
'status' => false,
'message' => 'Authorization token required'
])->setStatusCode(401);
} }
$decodedToken = validateJWT($matches[1]); // ✅ 2. Validate and decode the JWT
// $decodedToken = validateJWT($matches[1]);
$decodedToken = JWT::decode($matches[1], new Key(getenv('JWT_SECRET'), 'HS256'));
if (!$decodedToken) { if (!$decodedToken) {
return service('response')->setJSON(['status' => 401, 'message' => 'Invalid or expired token'])->setStatusCode(401); return $response->setJSON([
'status' => false,
'message' => 'Invalid or expired token'
])->setStatusCode(401);
} }
return; // print_r($decodedToken);
// echo $decodedToken->data->role;
// die;
// ✅ 3. Store decoded user data in request
$request->user = $decodedToken;
// ✅ 4. Role-based restriction (if $arguments are passed)
if ($arguments && isset($decodedToken->data->role)) {
$allowedRoles = array_map('strtolower', array_map('trim', $arguments));
$userRole = strtolower(trim($decodedToken->data->role));
if (!in_array($userRole, $allowedRoles)) {
return $response->setJSON([
'status' => false,
'message' => 'Access denied. You do not have permission.'
])->setStatusCode(403);
}
}
return; // All good — proceed to controller
} }
public function after(RequestInterface $request, ResponseInterface $response, $arguments = null) public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
{ {
// No action needed // No post-processing needed
} }
} }

View File

@ -473,6 +473,18 @@ function getAllowedClassForUser($trip_type,$user_id)
} }
function decryptLoginPayload($payload)
{
$key = '1234567890123456'; // same as Flutter key
$iv = 'abcdefghijklmnop'; // same IV
$cipher = 'AES-128-CBC';
$decrypted = openssl_decrypt(base64_decode($payload), $cipher, $key, OPENSSL_RAW_DATA, $iv);
return json_decode($decrypted);
}
} }

View File

@ -10,7 +10,7 @@ class UserModel extends Model
protected $primaryKey = 'user_id'; // Primary key protected $primaryKey = 'user_id'; // Primary key
// Fields that can be mass assigned // Fields that can be mass assigned
protected $allowedFields = ['first_name','last_name','password','email','mobile_no','alternate_mobile_no','date_of_birth','address','gender','postal_code','country_code','employee_code','role_id','department_id','group_id','first_approver','first_approver_email','second_approver','second_approver_email','third_approver','third_approver_email','fourth_approver','fourth_approver_email','user_type','passport_number','place_of_issue','passport_document','passport_firstname','passport_middlename','passport_lastname','nationality','date_of_issue','date_of_expiry','created_on','created_by','updated_on','updated_by','is_active','org_id', 'temp_password', 'forex_pre_paid_card_number', 'emergency_contact_number', 'd_seat_preference', 'd_meal_preference', 'i_seat_preference', 'i_meal_preference', 'agent_supported_service_ids', 'd_additonalInfo', 'i_additonalInfo', 'forex_expiry_date', 'delegated_to_user_id', 'delegation_start_date', 'delegation_end_date','last_login_at','company_name']; protected $allowedFields = ['first_name','last_name','password','email','mobile_no','alternate_mobile_no','date_of_birth','address','gender','postal_code','country_code','employee_code','role_id','department_id','group_id','first_approver','first_approver_email','second_approver','second_approver_email','third_approver','third_approver_email','fourth_approver','fourth_approver_email','user_type','passport_number','place_of_issue','passport_document','passport_firstname','passport_middlename','passport_lastname','nationality','date_of_issue','date_of_expiry','created_on','created_by','updated_on','updated_by','is_active','org_id', 'temp_password', 'forex_pre_paid_card_number', 'emergency_contact_number', 'd_seat_preference', 'd_meal_preference', 'i_seat_preference', 'i_meal_preference', 'agent_supported_service_ids', 'd_additonalInfo', 'i_additonalInfo', 'forex_expiry_date', 'delegated_to_user_id', 'delegation_start_date', 'delegation_end_date','last_login_at','company_name','failed_attempts','lock_until'];
// Specify the return type of the results // Specify the return type of the results
protected $returnType = 'array'; protected $returnType = 'array';