diff --git a/app/Config/Filters.php b/app/Config/Filters.php index 7add9fb4..4f16d072 100644 --- a/app/Config/Filters.php +++ b/app/Config/Filters.php @@ -12,6 +12,8 @@ use CodeIgniter\Filters\SecureHeaders; use App\Filters\AuthMVC; use App\Filters\HttpRequestLog; +use App\Filters\AuthJWT; + class Filters extends BaseConfig { /** @@ -29,7 +31,8 @@ class Filters extends BaseConfig 'invalidchars' => InvalidChars::class, 'secureheaders' => SecureHeaders::class, 'authMVC' => AuthMVC::class, - 'HttpRequestLog' => HttpRequestLog::class + 'HttpRequestLog' => HttpRequestLog::class, + 'authJWT' => AuthJWT::class ]; /** diff --git a/app/Config/Routes.php b/app/Config/Routes.php index ae7e6d50..f8a6622c 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -191,3 +191,11 @@ $routes->group("/util", ["filter" => "authMVC"], function($routes){ $routes->cli('processjob', 'JobWorker::processJob'); + + +$routes->get("/api", "RestAuthenticationController::index"); +$routes->group("/api", ["filter" => "authJWT"], function($routes){ + $routes->post("logined", "RestAuthenticationController::logined"); + $routes->post("getId", "RestAuthenticationController::getUserIdFromToken"); + +}); \ No newline at end of file diff --git a/app/Controllers/ClientController.php b/app/Controllers/ClientController.php index 24c4a80b..8575d6b0 100644 --- a/app/Controllers/ClientController.php +++ b/app/Controllers/ClientController.php @@ -2,6 +2,7 @@ namespace App\Controllers; use App\Helpers\DepositHelper; +use App\helpers\JWTToken; use CodeIgniter\HTTP\IncomingRequest; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; @@ -29,6 +30,8 @@ use App\Models\PolicyPremium1Model; use App\Models\PolicyPremium2Model; use App\Models\EmployeeModel; + + class ClientController extends AdminController { use ResponseTrait; @@ -86,6 +89,15 @@ class ClientController extends AdminController public function index() { + + // $token = $_SESSION; + // $token = $request->getHeaderLine('Authorization'); + + + // print_r(JWTToken::getIdFromToken($token)); + + // die(); + $this->myLogger->logme('error','Client list function called'); $headerData['page_name'] = 'Client List'; $data['clientList'] = $this->clientModel->getCreatedByUserName(); @@ -759,6 +771,7 @@ class ClientController extends AdminController { try { + $this->myLogger->logme('error','Terms CREATE function called'); /*** Client Policy Table Primary Key(ID) ***/ @@ -766,13 +779,8 @@ class ClientController extends AdminController $data['sum_insured'] =$this->request->getPost("sum_insured"); $data['family_floater'] =$this->request->getPost("family_floater"); - if (!$data['family_floater'] || $data['family_floater'] == 0) { - $data['corporatebuffer'] = ""; - $data['family_floaters'] = ""; - }else{ $data['corporatebuffer'] = $this->request->getPost("corporatebuffer"); $data['family_floaters'] = $this->request->getPost("family_floaters") ?? []; - } $data['waiverofpreexistingdiseases'] =$this->request->getPost("waiverofpreexistingdiseases"); if ($data['waiverofpreexistingdiseases'] == 1) { @@ -858,7 +866,6 @@ class ClientController extends AdminController $record = $this->clientPolicyModel->where('id', $client_policy_id)->first(); $policy_name = $this->policesModel->select('name')->where('id', $record['policy_id'])->first(); - $emp_count = $this->employeeModel ->join('client_policy cp',"employees.client_id = cp.client_id") ->join('employee_polices ep',"cp.id = ep.client_policy_id AND employees.id = ep.employee_id") ->where("employees.client_id", $record['client_id']) diff --git a/app/Controllers/RestAuthenticationController.php b/app/Controllers/RestAuthenticationController.php new file mode 100644 index 00000000..97170242 --- /dev/null +++ b/app/Controllers/RestAuthenticationController.php @@ -0,0 +1,72 @@ +myLogger = \Config\Services::mylogger(); + + } + + 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........"; + } + + + + 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); + } + + + +} \ No newline at end of file diff --git a/app/Filters/AuthJWT.php b/app/Filters/AuthJWT.php new file mode 100644 index 00000000..a9b6911f --- /dev/null +++ b/app/Filters/AuthJWT.php @@ -0,0 +1,55 @@ +getHeader('Authorization'); + + if ($jwt) { + if (JWTToken::validateJWT($jwt)) { + $data = JWTToken::validateJWT($jwt); + $data = json_decode($data); + if ($data->status) { + // $auth = $request->getHeader("Authorization"); + + return true; + }else{ + header('Content-Type: application/json'); + http_response_code(401); + $error = json_encode(["status" => 401, "message" => $data->message]); + echo $error; + exit; + } + } + } else { + header('Content-Type: application/json'); + http_response_code(403); + $error = json_encode(["status" => 403, "message" => "Access Forbidden!"]); + echo $error; + exit(); + } + } + + public function after(RequestInterface $request, ResponseInterface $response, $arguments = null) + { + // Do something here after the response is sent + } + + + +} diff --git a/app/Helpers/JWTToken.php b/app/Helpers/JWTToken.php new file mode 100644 index 00000000..582bde39 --- /dev/null +++ b/app/Helpers/JWTToken.php @@ -0,0 +1,127 @@ + $iat, + "exp" => $exp, + ]; + if ($data !== null) { + $request_data = array_merge($request_data, (array)$data); + } + try{ + $token = JWT::encode($request_data ,$secret_Key,'HS512'); + + return ['status' => true,'token' => $token]; + } + catch (Exception $e) { + return ['status' => false,'message' => $e->getMessage()]; + } + } + + public static function validateJWT($jwt) + { + $jwtParts = explode(' ', $jwt); + + if (count($jwtParts) != 2 || $jwtParts[0] == 'Bearer') { + return false; + } + + $token = $jwtParts[1]; + + try { + $decoded = JWT::decode($token, new Key("secret", 'HS512')); + return json_encode(['status' => true, 'message' => 'Token is valid', 'decoded' => (array) $decoded]); + } catch (ExpiredException $e) { + return json_encode(['status' => false, 'message' => 'Token has expired']); + } catch (BeforeValidException $e) { + return json_encode(['status' => false, 'message' => 'Token is not yet valid']); + } catch (SignatureInvalidException $e) { + return json_encode(['status' => false, 'message' => 'Token signature is invalid']); + } catch (\Exception $e) { + return json_encode(['status' => false, 'message' => 'An error occurred while decoding the token']); + } + + } + + + + public static function getIdFromToken($jwt) + { + + $jwtParts = explode(' ', $jwt); + + $token = $jwtParts[0]; + + try { + $decoded = JWT::decode($token, new Key("secret", 'HS512')); + return json_encode(['status' => true, 'message' => 'Token is valid', 'data' =>$decoded->data->id ]); + } catch (ExpiredException $e) { + return json_encode(['status' => false, 'message' => 'Token has expired']); + } catch (BeforeValidException $e) { + return json_encode(['status' => false, 'message' => 'Token is not yet valid']); + } catch (SignatureInvalidException $e) { + return json_encode(['status' => false, 'message' => 'Token signature is invalid']); + } catch (\Exception $e) { + return json_encode(['status' => false, 'message' => 'An error occurred while decoding the token']); + } + + + } + + public static function getUserIdFromToken() + { + $request = \Config\Services::request(); + $jwt = $request->getHeader('Authorization'); + $jwtParts = explode(' ', $jwt); + $token = $jwtParts[1]; + + $decoded = JWT::decode($token, new Key("secret", 'HS512')); + return $decoded->id; + } + + public static function getUserRoleFromToken() + { + $request = \Config\Services::request(); + $jwt = $request->getHeader('Authorization'); + $jwtParts = explode(' ', $jwt); + $token = $jwtParts[1]; + + $decoded = JWT::decode($token, new Key("secret", 'HS512')); + return $decoded->role; + } + + + public static function decodeToken() + { + $request = \Config\Services::request(); + $jwt = $request->getHeader('Authorization'); + $jwtParts = explode(' ', $jwt); + $token = $jwtParts[1]; + + $decoded = JWT::decode($token, new Key("secret", 'HS512')); + return $decoded; + } + +} + diff --git a/app/Views/policy_gmc_terms.php b/app/Views/policy_gmc_terms.php index 993f1ba8..5dbd1893 100644 --- a/app/Views/policy_gmc_terms.php +++ b/app/Views/policy_gmc_terms.php @@ -100,7 +100,7 @@ Yes No -
+
Self Spouse @@ -368,20 +368,20 @@ var grid_html = ''; }); - $('input[name="family_floater"]').change(function() { - console.log($(this).val()); - if ($(this).val() == '1') { - var element = $(this).parent().next()[0]; - $(element).css("display", "block"); - var element2 = $(this).parent().parent().parent().next()[0]; - $(element2).css("display", ""); - } else { - var element = $(this).parent().next()[0]; - $(element).css("display", "none"); - var element2 = $(this).parent().parent().parent().next()[0]; - $(element2).css("display", "none"); - } - }); + // $('input[name="family_floater"]').change(function() { + // console.log($(this).val()); + // if ($(this).val() == '1') { + // var element = $(this).parent().next()[0]; + // $(element).css("display", "block"); + // var element2 = $(this).parent().parent().parent().next()[0]; + // $(element2).css("display", ""); + // } else { + // var element = $(this).parent().next()[0]; + // $(element).css("display", "none"); + // var element2 = $(this).parent().parent().parent().next()[0]; + // $(element2).css("display", "none"); + // } + // }); $('input[name="waiverofpreexistingdiseases"]').change(function() { diff --git a/composer.json b/composer.json index 018345de..d49707b4 100644 --- a/composer.json +++ b/composer.json @@ -14,10 +14,12 @@ "ext-intl": "*", "ext-json": "*", "ext-mbstring": "*", + "firebase/php-jwt": "^6.10", "google/apiclient": "^2.15.0", "laminas/laminas-escaper": "^2.9", "phpoffice/phpspreadsheet": "^2.0", - "psr/log": "^1.1" + "psr/log": "^1.1", + "slim/slim": "^4.13" }, "require-dev": { "codeigniter/coding-standard": "^1.7",