2096 lines
79 KiB
PHP
Executable File

<?php defined('BASEPATH') OR exit('No direct script access allowed');
use Twilio\Rest\Client;
class Auth extends MX_Controller {
protected $indeed_redirect_uri;
function __construct()
{
parent::__construct();
$this->load->database();
$this->load->library(array('ion_auth','form_validation','linkedin'));
$this->load->helper(array('url','language'));
$this->form_validation->set_error_delimiters($this->config->item('error_start_delimiter', 'ion_auth'), $this->config->item('error_end_delimiter', 'ion_auth'));
$this->lang->load('auth');
//$this->load->model('website_settings/Website_Settings_model');
$this->load->model('website_settings/Website_model');
$this->load->model('caregivers/Caregiver_model');
$this->load->model('addcaregiver/Addcaregiver_model');
$this->load->model('referral/Referral_model');
//$this->load->model('home/Home_model');
$this->indeed_redirect_uri = urlencode(indeed_oauth_redirect_uri);
}
//redirect if needed, otherwise display the user list
function index()
{
/*LinkedIn login*/
$data['linkedInUri'] = $this->linkedin->getAuthUrl();
if($_GET['code'] != '')
{
$accessToken = $this->linkedin->getAccessToken($_GET['code']);
$profile = $this->linkedin->getPerson();
$Profemail = $this->linkedin->getEmail();
$data['code'] = "?code=".$_GET['code'];
// pre($data['profile']);
$profEmail = (array) $Profemail->elements[0];
$data['linkedInEmail'] = $profEmail['handle~']->emailAddress;
$data['linkedInFname'] = $profile->firstName->localized->en_US;
$data['linkedInLname'] = $profile->lastName->localized->en_US;
$data['oauth_uid'] = $profile->id;
$data['oauth_provider'] = 'linkedin';
// echo "<pre>";print_r($data);die;
$emailID = $data['linkedInEmail'];
$remember = false;
$this->session->set_userdata('accessToken',$accessToken);
if ($this->ion_auth->loginLinkedin($emailID, $remember))
{
//if the login is successful
//redirect them back to the home page
$this->session->set_flashdata('message', $this->ion_auth->messages());
redirect('/home', 'refresh');
}
}
/*LinkedIn login end*/
/**
* Indeed login
*/
$data['indeedUri'] = "https://secure.indeed.com/oauth/v2/authorize?client_id=".INDEED_CLIENT_ID."&redirect_uri=".$this->indeed_redirect_uri."&response_type=code&state=employer1234&scope=email+offline_access+employer_access";
// echo $_GET['code'];die;
/*********************/
$data['banner']=$this->Website_model->getBannerList();
$data['content']=$this->Website_model->getContentList();
$data['basic']=$this->Website_model->getbasicInfo();
$data['specialities']=$this->Website_model->getSpecialitiesList();
$data['caregiver_skill_list']=$this->Website_model->caregiver_skill_list();
$this->load->view('frontend/header',$data);
$this->load->view('frontend/index',$data);
$this->load->view('frontend/footer',$data);
//echo 'test';die;
/*
if (!$this->ion_auth->logged_in())
{
//redirect them to the login page
redirect('auth/login', 'refresh');
}
/*
elseif (!$this->ion_auth->is_admin()) //remove this elseif if you want to enable this for non-admins
{
//redirect them to the home page because they must be an administrator to view this
return show_error('You must be an administrator to view this page.');
}
else
{
//set the flash data error message if there is one
$data['message'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('message');
//list the users
$data['users'] = $this->ion_auth->users()->result();
foreach ($data['users'] as $k => $user)
{
$data['users'][$k]->groups = $this->ion_auth->get_users_groups($user->id)->result();
}
// $this->_render_page('auth/index', $data);
redirect('home', 'refresh');
}
*/
}
function page(){
try{
$pageRequestBy=$this->input->get('pg');
if(in_array($pageRequestBy,['seekingcare','employment'])){
$preferred_lang=get_cookie('pref_language');
$preferred_lang=$preferred_lang!=''?$preferred_lang:'english';
$merchant_details=$this->Website_model->getbasicInfo();
$merchant_details->logo=base_url().'common/frontend/assets/images/logo 1.png';
$merchant_details->logo_footer=base_url().'common/frontend/assets/images/logo_2.png';
$website_content=$this->Website_model->getContentList();
$our_specialities=$this->Website_model->getSpecialitiesList();
$top_nurses=$this->Website_model->getTopNursesList();
if($pageRequestBy=='seekingcare'){
$dataComponents=(object)[
'navbar'=>(object)[
'navs'=>[
'home',
'about',
'services',
'login'
]
],
'intro'=>(object)[
'logo'=>isset($website_content[17]->image)&&$website_content[17]->image!=''?base_url().$website_content[17]->image:'',
'title'=>isset($website_content[17]->heading)?$website_content[17]->heading:'',
'sub_title'=>isset($website_content[17]->sub_heading)?$website_content[17]->sub_heading:'',
'text'=>isset($website_content[17]->description)?json_decode($website_content[17]->description)->{$preferred_lang}:''
],
'whyus'=>(object)[
'title'=>isset($website_content[6]->heading)?$website_content[6]->heading:'',
'sub_title'=>isset($website_content[6]->sub_heading)?$website_content[6]->sub_heading:'',
'text'=>isset($website_content[6]->description)?json_decode($website_content[6]->description)->{$preferred_lang}:'',
'cards'=>[
(object)[
// 'logo'=>base_url().'common/frontend/assets/images/landing/icon_1.png',
'logo'=>isset($website_content[20]->image)&&$website_content[20]->image!=''?base_url().$website_content[20]->image:'',
'title'=>isset($website_content[20]->heading)?$website_content[20]->heading:''
],(object)[
'logo'=>isset($website_content[19]->image)&&$website_content[19]->image!=''?base_url().$website_content[19]->image:'',
'title'=>isset($website_content[19]->heading)?$website_content[19]->heading:''
],(object)[
'logo'=>isset($website_content[8]->image)&&$website_content[8]->image!=''?base_url().$website_content[8]->image:'',
'title'=>isset($website_content[8]->heading)?$website_content[8]->heading:''
],(object)[
'logo'=>isset($website_content[18]->image)&&$website_content[18]->image!=''?base_url().$website_content[18]->image:'',
'title'=>isset($website_content[18]->heading)?$website_content[18]->heading:''
]
]
],
'about'=>(object)[
'logo'=>isset($website_content[21]->image)&&$website_content[21]->image!=''?base_url().$website_content[21]->image:'',
'title'=>isset($website_content[21]->heading)?$website_content[21]->heading:'',
'sub_title'=>isset($website_content[21]->sub_heading)?$website_content[21]->sub_heading:'',
'text'=>isset($website_content[21]->description)?json_decode($website_content[21]->description)->{$preferred_lang}:''
],
'services'=>(object)[
'title'=>isset($our_specialities[0]->heading)?$our_specialities[0]->heading:'',
'sub_title'=>isset($our_specialities[0]->description)?$our_specialities[0]->description:'',
'text'=>lang('The_WeCuro_platform_connectivitscreening_quality_medical_providers_capabilities'),
'cards'=>[
(object)[
'logo'=>isset($our_specialities[1]->image)&&$our_specialities[1]->image!=''?base_url().$our_specialities[1]->image:'',
'title'=>isset($our_specialities[1]->heading)?$our_specialities[1]->heading:'',
'text'=>isset($our_specialities[1]->description)?$our_specialities[1]->description:'',
'order'=>1
],(object)[
'logo'=>isset($our_specialities[2]->image)&&$our_specialities[2]->image!=''?base_url().$our_specialities[2]->image:'',
'title'=>isset($our_specialities[2]->heading)?$our_specialities[2]->heading:'',
'text'=>isset($our_specialities[2]->description)?$our_specialities[2]->description:'',
'order'=>2
],(object)[
'logo'=>isset($our_specialities[3]->image)&&$our_specialities[3]->image!=''?base_url().$our_specialities[3]->image:'',
'title'=>isset($our_specialities[3]->heading)?$our_specialities[3]->heading:'',
'text'=>isset($our_specialities[3]->description)?$our_specialities[3]->description:'',
'order'=>3
]
]
],
'footer'=>(object)[
'logo_group_social'=>base_url().'common/frontend/assets/images/group-social-share.svg',
'logo_google_play'=>base_url().'common/frontend/assets/images/google-play.svg',
'logo_app_store'=>base_url().'common/frontend/assets/images/app-store.svg',
'navs'=>[
'about',
'whyus',
'services',
'privacy_policy',
'terms_conditions'
]
]
];
$data=(object)[
'data'=>(object)[
'components'=>$dataComponents,
'page'=>'seekingcare',
'merchant_details'=>$merchant_details,
'preferred_lang'=>$preferred_lang
]
];
$this->load->view('frontend/pages/seekingcare',$data);
}
else if($pageRequestBy=='employment'){
$dataComponents=(object)[
'navbar'=>(object)[
'navs'=>[
'home',
'about',
'process',
'login'
]
],
'intro'=>(object)[
'logo'=>isset($website_content[22]->image)&&$website_content[22]->image!=''?base_url().$website_content[22]->image:'',
'title'=>isset($website_content[22]->heading)?$website_content[22]->heading:'',
'sub_title'=>isset($website_content[22]->sub_heading)?$website_content[22]->sub_heading:'',
'text'=>isset($website_content[22]->description)?json_decode($website_content[22]->description)->{$preferred_lang}:''
],
'whyus'=>(object)[
'title'=>isset($website_content[6]->heading)?$website_content[6]->heading:'',
'sub_title'=>isset($website_content[6]->sub_heading)?$website_content[6]->sub_heading:'',
'text'=>isset($website_content[6]->description)?json_decode($website_content[6]->description)->{$preferred_lang}:'',
'cards'=>[
(object)[
'logo'=>isset($website_content[7]->image)&&$website_content[7]->image!=''?base_url().$website_content[7]->image:'',
'title'=>isset($website_content[7]->heading)?$website_content[7]->heading:''
],(object)[
'logo'=>isset($website_content[23]->image)&&$website_content[23]->image!=''?base_url().$website_content[23]->image:'',
'title'=>isset($website_content[23]->heading)?$website_content[23]->heading:''
],(object)[
'logo'=>isset($website_content[24]->image)&&$website_content[24]->image!=''?base_url().$website_content[24]->image:'',
'title'=>isset($website_content[24]->heading)?$website_content[24]->heading:''
],(object)[
'logo'=>isset($website_content[8]->image)&&$website_content[8]->image!=''?base_url().$website_content[8]->image:'',
'title'=>isset($website_content[8]->heading)?$website_content[8]->heading:''
]
]
],
'about'=>(object)[
'logo'=>isset($website_content[21]->image)&&$website_content[21]->image!=''?base_url().$website_content[21]->image:'',
'title'=>isset($website_content[21]->heading)?$website_content[21]->heading:'',
'sub_title'=>isset($website_content[21]->sub_heading)?$website_content[21]->sub_heading:'',
'text'=>isset($website_content[21]->description)?json_decode($website_content[21]->description)->{$preferred_lang}:''
],
'nurses'=>(object)[
'title'=>isset($website_content[26]->heading)?$website_content[26]->heading:'',
'sub_title'=>isset($website_content[26]->sub_heading)?$website_content[26]->sub_heading:'',
'text'=>isset($website_content[26]->description)?json_decode($website_content[26]->description)->{$preferred_lang}:'',
'cards'=>[
(object)[
'logo'=>isset($top_nurses[0]->image)&&$top_nurses[0]->image!=''?base_url().$top_nurses[0]->image:'',
'name'=>isset($top_nurses[0]->name)?$top_nurses[0]->name:'',
'address'=>isset($top_nurses[0]->address)?$top_nurses[0]->address:''
],(object)[
'logo'=>isset($top_nurses[1]->image)&&$top_nurses[1]->image!=''?base_url().$top_nurses[1]->image:'',
'name'=>isset($top_nurses[1]->name)?$top_nurses[1]->name:'',
'address'=>isset($top_nurses[1]->address)?$top_nurses[1]->address:''
],(object)[
'logo'=>isset($top_nurses[2]->image)&&$top_nurses[2]->image!=''?base_url().$top_nurses[2]->image:'',
'name'=>isset($top_nurses[2]->name)?$top_nurses[2]->name:'',
'address'=>isset($top_nurses[2]->address)?$top_nurses[2]->address:''
],(object)[
'logo'=>isset($top_nurses[3]->image)&&$top_nurses[3]->image!=''?base_url().$top_nurses[3]->image:'',
'name'=>isset($top_nurses[3]->name)?$top_nurses[3]->name:'',
'address'=>isset($top_nurses[3]->address)?$top_nurses[3]->address:''
]
]
],
'process'=>(object)[
'logo'=>isset($website_content[25]->image)&&$website_content[25]->image!=''?base_url().$website_content[25]->image:'',
'title'=>isset($website_content[25]->heading)?$website_content[25]->heading:'',
'sub_title'=>isset($website_content[25]->sub_heading)?$website_content[25]->sub_heading:'',
'text'=>isset($website_content[25]->description)?json_decode($website_content[25]->description)->{$preferred_lang}:'',
'cards'=>[
(object)[
'logo'=>base_url().'common/frontend/assets/images/landing/useredit.svg',
'title'=>'Signup',
'order'=>1
],(object)[
'logo'=>base_url().'common/frontend/assets/images/landing/i3dcubescan.svg',
'title'=>'Personalize',
'order'=>2
],(object)[
'logo'=>base_url().'common/frontend/assets/images/landing/verify.svg',
'title'=>'Verification',
'order'=>3
],(object)[
'logo'=>base_url().'common/frontend/assets/images/landing/clipboardtext.svg',
'title'=>'Onboarding',
'order'=>4
],(object)[
'logo'=>base_url().'common/frontend/assets/images/landing/tickcircle.svg',
'title'=>'Apply',
'order'=>5
]
]
],
'footer'=>(object)[
'logo_group_social'=>base_url().'common/frontend/assets/images/group-social-share.svg',
'logo_google_play'=>base_url().'common/frontend/assets/images/google-play.svg',
'logo_app_store'=>base_url().'common/frontend/assets/images/app-store.svg',
'navs'=>[
'about',
'whyus',
'nurses',
'process',
'privacy_policy',
'terms_conditions'
]
]
];
$data=(object)[
'data'=>(object)[
'components'=>$dataComponents,
'page'=>'employment',
'merchant_details'=>$merchant_details,
'preferred_lang'=>$preferred_lang,
'caregiver_skill_list'=>$this->Website_model->caregiver_skill_list()
]
];
$this->load->view('frontend/pages/employment',$data);
}
}else{
redirect('/');
}
}catch(Exception $e){
$getMsg="Auth - seekingcare: ".$e->getMessage();
echo $getMsg;
}
}
function checkEmail()
{
//$email=$this->input->input_stream('email');
$email=$this->input->get('email');
$result=$this->Caregiver_model->checkEmail($email);
echo $result;
}
//log the user in
function login()
{
$data['indeedUri'] = "https://secure.indeed.com/oauth/v2/authorize?client_id=".INDEED_CLIENT_ID."&redirect_uri=".$this->indeed_redirect_uri."&response_type=code&state=employer1234&scope=email+offline_access+employer_access";
//$data['linkedInUriLgn'] = $this->linkedin->getAuthUrl("http://52.229.31.187/app/auth/loginLinkedin");
$data['linkedInUriLgn'] = $this->linkedin->getAuthUrl();
// echo $data['linkedInUriLgn']; die;
if ($this->ion_auth->logged_in())
{
//redirect them to the login page
redirect('home');
}
$data['title'] = "Login";
//validate form input
$this->form_validation->set_rules('identity', 'Identity', 'required');
$this->form_validation->set_rules('password', 'Password', 'required');
if ($this->form_validation->run() == true)
{
/*
| check to see if the user is logging in
| check for "remember me"
*/
$remember = (bool) $this->input->post('remember');
if ($this->ion_auth->login($this->input->post('identity'), $this->input->post('password'), $remember))
{
/*
| if the login is successful
| redirect them back to the home page
*/
$this->session->set_flashdata('message', $this->ion_auth->messages());
redirect('/home', 'refresh');
}
else
{
/*
| if the login is un-successful
| redirect them back to the login page
*/
$this->session->set_flashdata('message', $this->ion_auth->errors());
redirect('auth/login', 'refresh'); #use redirects instead of loading views for compatibility with MY_Controller libraries
}
}
else
{
/*
| the user is not logging in so display the login page
| set the flash data error message if there is one
*/
$data['message'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('message');
$data['identity'] = array(
'name' => 'identity',
'id' => 'identity',
'type' => 'text',
'value' => $this->form_validation->set_value('identity'),
);
$data['password'] = array(
'name' => 'password',
'id' => 'password',
'type' => 'password',
);
$this->_render_page('auth/login', $data);
}
}
//log the user in using linkedin
function loginLinkedin()
{
$data['indeedUri'] = "https://secure.indeed.com/oauth/v2/authorize?client_id=".INDEED_CLIENT_ID."&redirect_uri=".$this->indeed_redirect_uri."&response_type=code&state=employer1234&scope=email+offline_access+employer_access";
$data['linkedInUriLgn'] = $this->linkedin->getAuthUrl("http://beta.wecuro.com/auth/loginLinkedin");
if ($this->ion_auth->logged_in())
{
//redirect them to the login page
redirect('home');
}
$data['title'] = "Login";
if($_GET['code'] != '')
{
$accessToken = $this->linkedin->getAccessToken($_GET['code']);
$profile = $this->linkedin->getPerson();
$Profemail = $this->linkedin->getEmail();
// pre($data['profile']);
$profEmail = (array) $Profemail->elements[0];
$data['linkedInEmail'] = $profEmail['handle~']->emailAddress;
$data['linkedInFname'] = $profile->firstName->localized->en_US;
$data['linkedInLname'] = $profile->lastName->localized->en_US;
}
$emailID = $data['linkedInEmail'];
//check to see if the user is logging in
//check for "remember me"
$remember = false;
if ($this->ion_auth->loginLinkedin($emailID, $remember))
{
//if the login is successful
//redirect them back to the home page
$this->session->set_flashdata('message', $this->ion_auth->messages());
redirect('/home', 'refresh');
}
else
{
//if the login was un-successful
//redirect them back to the login page
$this->session->set_flashdata('message', $this->ion_auth->errors());
redirect('auth/login', 'refresh'); //use redirects instead of loading views for compatibility with MY_Controller libraries
}
}
function register_with_linkedin()
{
$url = $this->linkedin->getAuthUrl();
redirect($url);
}
function loginIndeed()
{
if(isset($_GET['code']) && $_GET['code']!="")
{
// $ch = curl_init();
// $headers = array(
// 'Accept: application/json',
// "Content-Type: application/x-www-form-urlencoded"
// );
// $code = $_GET['code'];
// curl_setopt($ch, CURLOPT_URL,"https://apis.indeed.com/oauth/v2/tokens?code={$code}&client_id=967561e900e24529b708e3797e5170d4e266f0e9ad9c9961ad120c7b395702c9&client_secret=rphUR318JIN6hn1xiksAeSqkZzwFTauJU6nYXqq9D58wky9aQ4Bf9UO6lDWPUAt0&redirect_uri=http%3A%2F%2Flocalhost%2Fhospital-management%2Fauth%2FloginIndeed&grant_type=authorization_code");
// curl_setopt($ch, CURLOPT_POST, 1);
// curl_setopt($ch, CURLOPT_POSTFIELDS,
// "postvar1=value1&postvar2=value2&postvar3=value3");
// // Receive server response ...
// curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// $server_output = curl_exec($ch);
// $x = json_decode($server_output);
// // echo $x->id_token;
// // $data = json_decode($server_output);
// $indData = $this->jwt_request($x->access_token);
$code = $_GET['code'];
$details=$this->getIndeedAccessToken($code);
$indData = $this->jwt_request($details->access_token);
// _die($indData);
}
/**
* Indeed login
*/
$data['indeedUri'] = "https://secure.indeed.com/oauth/v2/authorize?client_id=".INDEED_CLIENT_ID."&redirect_uri=".$this->indeed_redirect_uri."&response_type=code&state=employer1234&scope=email+offline_access+employer_access";
$data['indData'] = $indData;
$data['indeedEmail'] = $indeedEmail = $indData->email;
$remember = false;
if ($this->ion_auth->loginLinkedin($indeedEmail, $remember))
{
//if the login is successful
//redirect them back to the home page
$this->session->set_flashdata('message', $this->ion_auth->messages());
redirect('/home', 'refresh');
}
// _die($indData->email);
/*********************/
header('Content-Type: text/html');
$data['banner']=$this->Website_model->getBannerList();
$data['content']=$this->Website_model->getContentList();
$data['basic']=$this->Website_model->getbasicInfo();
$this->load->view('frontend/header',$data);
$this->load->view('frontend/index',$data);
$this->load->view('frontend/footer',$data);
}
public function getIndeedAccessToken($code)
{
$url = "https://apis.indeed.com/oauth/v2/tokens";
$params = [
'client_id' => INDEED_CLIENT_ID,
'client_secret' => INDEED_CLIENT_SECRET,
'redirect_uri' => indeed_oauth_redirect_uri,
'code' => $code,
'grant_type' => INDEED_GRANT_TYPE,
];
$response = $this->postcurl($url,$params);
$accessDetails = json_decode($response);
return $accessDetails;
}
protected function postcurl($url, $parameters)
{
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$headers = array(
"Content-Type: application/x-www-form-urlencoded",
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$postvars = '';
foreach($parameters as $key=>$value) {
$postvars .= $key . "=" . $value . "&";
}
curl_setopt($curl, CURLOPT_POSTFIELDS, $postvars);
//for debug only!
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($curl);
return $result;
}
function jwt_request($token, $post=array())
{
header('Content-Type: application/json'); // Specify the type of data
$ch = curl_init('https://secure.indeed.com/v2/api/userinfo'); // Initialise cURL
$post = json_encode($post); // Encode the data array into a JSON string
$authorization = "Authorization: Bearer ".$token; // Prepare the authorisation token
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization )); // Inject the token into the header
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1); // Specify the request method as POST
curl_setopt($ch, CURLOPT_POSTFIELDS, $post); // Set the posted fields
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // This will follow any redirects
$result = curl_exec($ch); // Execute the cURL statement
curl_close($ch); // Close the cURL connection
return json_decode($result); // Return the received data
}
//log the user out
function logout()
{
$data['title'] = "Logout";
//log the user out
$logout = $this->ion_auth->logout();
//$linkdinLogout = $this->linkdinLogoutUrl();
// $homepage = file_get_contents('https://www.linkedin.com/m/logout');
$accessToken = $this->session->userdata('accessToken');
// $data=$this->linkedin->linkdinLogoutUrl($accessToken);
// echo $data;die;
//redirect them to the login page
$this->session->set_flashdata('message', $this->ion_auth->messages());
redirect('auth/login', 'refresh');
}
// function linkdinLogoutUrl(){
// return curl_init("https://www.linkedin.com/m/logout");
// }
//change password
function change_password()
{
$this->form_validation->set_rules('old', $this->lang->line('change_password_validation_old_password_label'), 'required');
$this->form_validation->set_rules('new', $this->lang->line('change_password_validation_new_password_label'), 'required|min_length[' . $this->config->item('min_password_length', 'ion_auth') . ']|max_length[' . $this->config->item('max_password_length', 'ion_auth') . ']|matches[new_confirm]');
$this->form_validation->set_rules('new_confirm', $this->lang->line('change_password_validation_new_password_confirm_label'), 'required');
if (!$this->ion_auth->logged_in())
{
redirect('auth/login', 'refresh');
}
$user = $this->ion_auth->user()->row();
if ($this->form_validation->run() == false)
{
//display the form
//set the flash data error message if there is one
$data['message'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('message');
$data['min_password_length'] = $this->config->item('min_password_length', 'ion_auth');
$data['old_password'] = array(
'name' => 'old',
'id' => 'old',
'type' => 'password',
);
$data['new_password'] = array(
'name' => 'new',
'id' => 'new',
'type' => 'password',
'pattern' => '^.{'.$data['min_password_length'].'}.*$',
);
$data['new_password_confirm'] = array(
'name' => 'new_confirm',
'id' => 'new_confirm',
'type' => 'password',
'pattern' => '^.{'.$data['min_password_length'].'}.*$',
);
$data['user_id'] = array(
'name' => 'user_id',
'id' => 'user_id',
'type' => 'hidden',
'value' => $user->id,
);
//render
$this->_render_page('auth/change_password', $data);
}
else
{
$identity = $this->session->userdata('identity');
$change = $this->ion_auth->change_password($identity, $this->input->post('old'), $this->input->post('new'));
if ($change)
{
//if the password was successfully changed
$this->session->set_flashdata('message', $this->ion_auth->messages());
$this->logout();
}
else
{
$this->session->set_flashdata('message', $this->ion_auth->errors());
redirect('auth/change_password', 'refresh');
}
}
}
//forgot password
function forgot_password()
{
//setting validation rules by checking wheather identity is username or email
if($this->config->item('identity', 'ion_auth') == 'username' )
{
$this->form_validation->set_rules('email', $this->lang->line('forgot_password_username_identity_label'), 'required');
}
else
{
$this->form_validation->set_rules('email', $this->lang->line('forgot_password_validation_email_label'), 'required|valid_email');
}
if ($this->form_validation->run() == false)
{
//setup the input
$data['email'] = array('name' => 'email',
'id' => 'email',
);
if ( $this->config->item('identity', 'ion_auth') == 'username' ){
$data['identity_label'] = $this->lang->line('forgot_password_username_identity_label');
}
else
{
$data['identity_label'] = $this->lang->line('forgot_password_email_identity_label');
}
//set any errors and display the form
$data['message'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('message');
$this->_render_page('auth/forgot_password', $data);
}
else
{
// get identity from username or email
if ( $this->config->item('identity', 'ion_auth') == 'username' ){
$identity = $this->ion_auth->where('username', strtolower($this->input->post('email')))->users()->row();
}
else
{
$identity = $this->ion_auth->where('email', strtolower($this->input->post('email')))->users()->row();
}
if(empty($identity)) {
if($this->config->item('identity', 'ion_auth') == 'username')
{
$this->ion_auth->set_message('forgot_password_username_not_found');
}
else
{
$this->ion_auth->set_message('forgot_password_email_not_found');
}
$this->session->set_flashdata('message', $this->ion_auth->messages());
redirect("auth/forgot_password", 'refresh');
}
//run the forgotten password method to email an activation code to the user
$forgotten = $this->ion_auth->forgotten_password($identity->{$this->config->item('identity', 'ion_auth')});
if ($forgotten)
{
//if there were no errors
$this->session->set_flashdata('message', $this->ion_auth->messages());
redirect("auth/login", 'refresh'); //we should display a confirmation page here instead of the login page
}
else
{
$this->session->set_flashdata('message', $this->ion_auth->errors());
redirect("auth/forgot_password", 'refresh');
}
}
}
//reset password - final step for forgotten password
public function reset_password($code = NULL)
{
if (!$code)
{
show_404();
}
$user = $this->ion_auth->forgotten_password_check($code);
if ($user)
{
//if the code is valid then display the password reset form
$this->form_validation->set_rules('new', $this->lang->line('reset_password_validation_new_password_label'), 'required|min_length[' . $this->config->item('min_password_length', 'ion_auth') . ']|max_length[' . $this->config->item('max_password_length', 'ion_auth') . ']|matches[new_confirm]');
$this->form_validation->set_rules('new_confirm', $this->lang->line('reset_password_validation_new_password_confirm_label'), 'required');
if ($this->form_validation->run() == false)
{
//display the form
//set the flash data error message if there is one
$data['message'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('message');
$data['min_password_length'] = $this->config->item('min_password_length', 'ion_auth');
$data['new_password'] = array(
'name' => 'new',
'id' => 'new',
'type' => 'password',
'pattern' => '^.{'.$data['min_password_length'].'}.*$',
);
$data['new_password_confirm'] = array(
'name' => 'new_confirm',
'id' => 'new_confirm',
'type' => 'password',
'pattern' => '^.{'.$data['min_password_length'].'}.*$',
);
$data['user_id'] = array(
'name' => 'user_id',
'id' => 'user_id',
'type' => 'hidden',
'value' => $user->id,
);
$data['csrf'] = $this->_get_csrf_nonce();
$data['code'] = $code;
//render
$this->_render_page('auth/reset_password', $data);
}
else
{
// do we have a valid request?
if ($this->_valid_csrf_nonce() === FALSE || $user->id != $this->input->post('user_id'))
{
//something fishy might be up
$this->ion_auth->clear_forgotten_password_code($code);
show_error($this->lang->line('error_csrf'));
}
else
{
// finally change the password
$identity = $user->{$this->config->item('identity', 'ion_auth')};
$change = $this->ion_auth->reset_password($identity, $this->input->post('new'));
if ($change)
{
//if the password was successfully changed
$this->session->set_flashdata('message', $this->ion_auth->messages());
redirect("auth/login", 'refresh');
}
else
{
$this->session->set_flashdata('message', $this->ion_auth->errors());
redirect('auth/reset_password/' . $code, 'refresh');
}
}
}
}
else
{
//if the code is invalid then send them back to the forgot password page
$this->session->set_flashdata('message', $this->ion_auth->errors());
redirect("auth/forgot_password", 'refresh');
}
}
//activate the user
function activate($id, $code=false)
{
if ($code !== false)
{
$activation = $this->ion_auth->activate($id, $code);
}
else if ($this->ion_auth->is_admin())
{
$activation = $this->ion_auth->activate($id);
}
if ($activation)
{
//redirect them to the auth page
$this->session->set_flashdata('message', $this->ion_auth->messages());
redirect("auth", 'refresh');
}
else
{
//redirect them to the forgot password page
$this->session->set_flashdata('message', $this->ion_auth->errors());
redirect("auth/forgot_password", 'refresh');
}
}
//deactivate the user
function deactivate($id = NULL)
{
if (!$this->ion_auth->logged_in() || !$this->ion_auth->is_admin())
{
//redirect them to the home page because they must be an administrator to view this
return show_error('You must be an administrator to view this page.');
}
$id = (int) $id;
$this->load->library('form_validation');
$this->form_validation->set_rules('confirm', $this->lang->line('deactivate_validation_confirm_label'), 'required');
$this->form_validation->set_rules('id', $this->lang->line('deactivate_validation_user_id_label'), 'required|alpha_numeric');
if ($this->form_validation->run() == FALSE)
{
// insert csrf check
$data['csrf'] = $this->_get_csrf_nonce();
$data['user'] = $this->ion_auth->user($id)->row();
$this->_render_page('auth/deactivate_user', $data);
}
else
{
// do we really want to deactivate?
if ($this->input->post('confirm') == 'yes')
{
// do we have a valid request?
if ($this->_valid_csrf_nonce() === FALSE || $id != $this->input->post('id'))
{
show_error($this->lang->line('error_csrf'));
}
// do we have the right userlevel?
if ($this->ion_auth->logged_in() && $this->ion_auth->is_admin())
{
$this->ion_auth->deactivate($id);
}
}
//redirect them back to the auth page
redirect('auth', 'refresh');
}
}
//create a new user
function create_user()
{
$data['title'] = "Create User";
if (!$this->ion_auth->logged_in() || !$this->ion_auth->is_admin())
{
redirect('auth', 'refresh');
}
$tables = $this->config->item('tables','ion_auth');
//validate form input
$this->form_validation->set_rules('first_name', $this->lang->line('create_user_validation_fname_label'), 'required');
$this->form_validation->set_rules('last_name', $this->lang->line('create_user_validation_lname_label'));
$this->form_validation->set_rules('email', $this->lang->line('create_user_validation_email_label'), 'required|valid_email|is_unique['.$tables['users'].'.email]');
$this->form_validation->set_rules('phone', $this->lang->line('create_user_validation_phone_label'), 'required');
$this->form_validation->set_rules('company', $this->lang->line('create_user_validation_company_label'));
$this->form_validation->set_rules('password', $this->lang->line('create_user_validation_password_label'), 'required|min_length[' . $this->config->item('min_password_length', 'ion_auth') . ']|max_length[' . $this->config->item('max_password_length', 'ion_auth') . ']|matches[password_confirm]');
$this->form_validation->set_rules('password_confirm', $this->lang->line('create_user_validation_password_confirm_label'), 'required');
if ($this->form_validation->run() == true)
{
$username = strtolower($this->input->post('first_name')) . ' ' . strtolower($this->input->post('last_name'));
$email = strtolower($this->input->post('email'));
$password = $this->input->post('password');
$additional_data = array(
'first_name' => $this->input->post('first_name'),
'last_name' => $this->input->post('last_name'),
'company' => $this->input->post('company'),
'phone' => $this->input->post('phone'),
);
}
if ($this->form_validation->run() == true && $this->ion_auth->register($username, $password, $email, $additional_data))
{
//check to see if we are creating the user
//redirect them back to the admin page
$this->session->set_flashdata('message', $this->ion_auth->messages());
redirect("auth", 'refresh');
}
else
{
//display the create user form
//set the flash data error message if there is one
$data['message'] = (validation_errors() ? validation_errors() : ($this->ion_auth->errors() ? $this->ion_auth->errors() : $this->session->flashdata('message')));
$data['first_name'] = array(
'name' => 'first_name',
'id' => 'first_name',
'type' => 'text',
'value' => $this->form_validation->set_value('first_name'),
);
$data['last_name'] = array(
'name' => 'last_name',
'id' => 'last_name',
'type' => 'text',
'value' => $this->form_validation->set_value('last_name'),
);
$data['email'] = array(
'name' => 'email',
'id' => 'email',
'type' => 'text',
'value' => $this->form_validation->set_value('email'),
);
$data['company'] = array(
'name' => 'company',
'id' => 'company',
'type' => 'text',
'value' => $this->form_validation->set_value('company'),
);
$data['phone'] = array(
'name' => 'phone',
'id' => 'phone',
'type' => 'text',
'value' => $this->form_validation->set_value('phone'),
);
$data['password'] = array(
'name' => 'password',
'id' => 'password',
'type' => 'password',
'value' => $this->form_validation->set_value('password'),
);
$data['password_confirm'] = array(
'name' => 'password_confirm',
'id' => 'password_confirm',
'type' => 'password',
'value' => $this->form_validation->set_value('password_confirm'),
);
$this->_render_page('auth/create_user', $data);
}
}
//edit a user
function edit_user($id)
{
$data['title'] = "Edit User";
if (!$this->ion_auth->logged_in() || (!$this->ion_auth->is_admin() && !($this->ion_auth->user()->row()->id == $id)))
{
redirect('auth', 'refresh');
}
$user = $this->ion_auth->user($id)->row();
$groups=$this->ion_auth->groups()->result_array();
$currentGroups = $this->ion_auth->get_users_groups($id)->result();
//validate form input
$this->form_validation->set_rules('first_name', $this->lang->line('edit_user_validation_fname_label'), 'required');
$this->form_validation->set_rules('last_name', $this->lang->line('edit_user_validation_lname_label'), 'required');
$this->form_validation->set_rules('phone', $this->lang->line('edit_user_validation_phone_label'), 'required');
$this->form_validation->set_rules('company', $this->lang->line('edit_user_validation_company_label'), 'required');
if (isset($_POST) && !empty($_POST))
{
// do we have a valid request?
if ($this->_valid_csrf_nonce() === FALSE || $id != $this->input->post('id'))
{
show_error($this->lang->line('error_csrf'));
}
//update the password if it was posted
if ($this->input->post('password'))
{
$this->form_validation->set_rules('password', $this->lang->line('edit_user_validation_password_label'), 'required|min_length[' . $this->config->item('min_password_length', 'ion_auth') . ']|max_length[' . $this->config->item('max_password_length', 'ion_auth') . ']|matches[password_confirm]');
$this->form_validation->set_rules('password_confirm', $this->lang->line('edit_user_validation_password_confirm_label'), 'required');
}
if ($this->form_validation->run() === TRUE)
{
$data = array(
'first_name' => $this->input->post('first_name'),
'last_name' => $this->input->post('last_name'),
'company' => $this->input->post('company'),
'phone' => $this->input->post('phone'),
);
//update the password if it was posted
if ($this->input->post('password'))
{
$data['password'] = $this->input->post('password');
}
// Only allow updating groups if user is admin
if ($this->ion_auth->is_admin())
{
//Update the groups user belongs to
$groupData = $this->input->post('groups');
if (isset($groupData) && !empty($groupData)) {
$this->ion_auth->remove_from_group('', $id);
foreach ($groupData as $grp) {
$this->ion_auth->add_to_group($grp, $id);
}
}
}
//check to see if we are updating the user
if($this->ion_auth->update($user->id, $data))
{
//redirect them back to the admin page if admin, or to the base url if non admin
$this->session->set_flashdata('message', $this->ion_auth->messages() );
if ($this->ion_auth->is_admin())
{
redirect('auth', 'refresh');
}
else
{
redirect('/', 'refresh');
}
}
else
{
//redirect them back to the admin page if admin, or to the base url if non admin
$this->session->set_flashdata('message', $this->ion_auth->errors() );
if ($this->ion_auth->is_admin())
{
redirect('auth', 'refresh');
}
else
{
redirect('/', 'refresh');
}
}
}
}
//display the edit user form
$data['csrf'] = $this->_get_csrf_nonce();
//set the flash data error message if there is one
$data['message'] = (validation_errors() ? validation_errors() : ($this->ion_auth->errors() ? $this->ion_auth->errors() : $this->session->flashdata('message')));
//pass the user to the view
$data['user'] = $user;
$data['groups'] = $groups;
$data['currentGroups'] = $currentGroups;
$data['first_name'] = array(
'name' => 'first_name',
'id' => 'first_name',
'type' => 'text',
'value' => $this->form_validation->set_value('first_name', $user->first_name),
);
$data['last_name'] = array(
'name' => 'last_name',
'id' => 'last_name',
'type' => 'text',
'value' => $this->form_validation->set_value('last_name', $user->last_name),
);
$data['company'] = array(
'name' => 'company',
'id' => 'company',
'type' => 'text',
'value' => $this->form_validation->set_value('company', $user->company),
);
$data['phone'] = array(
'name' => 'phone',
'id' => 'phone',
'type' => 'text',
'value' => $this->form_validation->set_value('phone', $user->phone),
);
$data['password'] = array(
'name' => 'password',
'id' => 'password',
'type' => 'password'
);
$data['password_confirm'] = array(
'name' => 'password_confirm',
'id' => 'password_confirm',
'type' => 'password'
);
$this->_render_page('auth/edit_user', $data);
}
// create a new group
function create_group()
{
$data['title'] = $this->lang->line('create_group_title');
if (!$this->ion_auth->logged_in() || !$this->ion_auth->is_admin())
{
redirect('auth', 'refresh');
}
//validate form input
$this->form_validation->set_rules('group_name', $this->lang->line('create_group_validation_name_label'), 'required|alpha_dash');
if ($this->form_validation->run() == TRUE)
{
$new_group_id = $this->ion_auth->create_group($this->input->post('group_name'), $this->input->post('description'));
if($new_group_id)
{
// check to see if we are creating the group
// redirect them back to the admin page
$this->session->set_flashdata('message', $this->ion_auth->messages());
redirect("auth", 'refresh');
}
}
else
{
//display the create group form
//set the flash data error message if there is one
$data['message'] = (validation_errors() ? validation_errors() : ($this->ion_auth->errors() ? $this->ion_auth->errors() : $this->session->flashdata('message')));
$data['group_name'] = array(
'name' => 'group_name',
'id' => 'group_name',
'type' => 'text',
'value' => $this->form_validation->set_value('group_name'),
);
$data['description'] = array(
'name' => 'description',
'id' => 'description',
'type' => 'text',
'value' => $this->form_validation->set_value('description'),
);
$this->_render_page('auth/create_group', $data);
}
}
//edit a group
function edit_group($id)
{
// bail if no group id given
if(!$id || empty($id))
{
redirect('auth', 'refresh');
}
$data['title'] = $this->lang->line('edit_group_title');
if (!$this->ion_auth->logged_in() || !$this->ion_auth->is_admin())
{
redirect('auth', 'refresh');
}
$group = $this->ion_auth->group($id)->row();
//validate form input
$this->form_validation->set_rules('group_name', $this->lang->line('edit_group_validation_name_label'), 'required|alpha_dash');
if (isset($_POST) && !empty($_POST))
{
if ($this->form_validation->run() === TRUE)
{
$group_update = $this->ion_auth->update_group($id, $_POST['group_name'], $_POST['group_description']);
if($group_update)
{
$this->session->set_flashdata('message', $this->lang->line('edit_group_saved'));
}
else
{
$this->session->set_flashdata('message', $this->ion_auth->errors());
}
redirect("auth", 'refresh');
}
}
//set the flash data error message if there is one
$data['message'] = (validation_errors() ? validation_errors() : ($this->ion_auth->errors() ? $this->ion_auth->errors() : $this->session->flashdata('message')));
//pass the user to the view
$data['group'] = $group;
$readonly = $this->config->item('admin_group', 'ion_auth') === $group->name ? 'readonly' : '';
$data['group_name'] = array(
'name' => 'group_name',
'id' => 'group_name',
'type' => 'text',
'value' => $this->form_validation->set_value('group_name', $group->name),
$readonly => $readonly,
);
$data['group_description'] = array(
'name' => 'group_description',
'id' => 'group_description',
'type' => 'text',
'value' => $this->form_validation->set_value('group_description', $group->description),
);
$this->_render_page('auth/edit_group', $data);
}
function _get_csrf_nonce()
{
$this->load->helper('string');
$key = random_string('alnum', 8);
$value = random_string('alnum', 20);
$this->session->set_flashdata('csrfkey', $key);
$this->session->set_flashdata('csrfvalue', $value);
return array($key => $value);
}
function _valid_csrf_nonce()
{
if ($this->input->post($this->session->flashdata('csrfkey')) !== FALSE &&
$this->input->post($this->session->flashdata('csrfkey')) == $this->session->flashdata('csrfvalue'))
{
return TRUE;
}
else
{
return FALSE;
}
}
function _render_page($view, $data=null, $render=false)
{
$this->viewdata = (empty($data)) ? $data: $data;
$view_html = $this->load->view($view, $this->viewdata, $render);
if (!$render) return $view_html;
}
function register() {
// _die($_POST);
$id = $this->input->post('id');
//print_r($id);die;
$form_status = $this->input->post('form_status');
$form_mode = $this->input->post('form_mode');
$fname = $this->input->post('fname');
$lname = $this->input->post('lname');
$email = $this->input->post('email');
$phone = $this->input->post('phone');
$password = $this->input->post('password');
$qualification_type = $this->input->post('qualification_type');
$oauth_uid = $this->input->post('oauth_uid');
$oauth_provider = $this->input->post('oauth_provider');
$hire_type = "New Hire";
/*recaptcha validation*/
$recaptcha=$this->input->post('g-recaptcha-response');
$recaptcha_result=validateCaptcha($recaptcha);
if(intval($recaptcha_result["success"])!==1){
redirect(base_url()."auth/page?pg=employment&captcha=invalid");
exit(0);
}
/*recaptcha validation*/
#if patient do not have email then create custom one
if($email==""){
for($i=1; $i<99999; $i++){
$email=strtolower($fname).'.'.generateRandomString(12)."@hms.com";
$checkEmail=$this->Referral_model->checkMail($email);
if($checkEmail==0){if($this->ion_auth->email_check($email)){continue;}else{break;}}else{continue;}
}
}
#if patient do not have email then create custom one
$data = array();
if(empty($id)){
if ($this->ion_auth->email_check($email)) {
$this->session->set_flashdata('feedback_error', 'This Email Address Is Already Registered');
redirect('caregivers/addNewCaregiver');
}else{
if($hire_type=='Re-Hire' && $date_of_re_hire==''){
echo 'else er if:'.$email.'<br>';die;
$this->session->set_flashdata('feedback_error', 'Enter re-hire daate.');
redirect('caregivers/addNewCaregiver');
}else{
$username = $this->input->post('fname');
$dfg = 6;
$this->ion_auth->register($username, $password, $email,$dfg,$oauth_uid,$oauth_provider);
$ion_user_id = $this->db->get_where('users', array('email' => $email))->row()->id;
}
}
$application_date=date ('Y-m-d', now());
if(isset($_POST['fname'])){ $data['fname'] = $fname; }
if(isset($_POST['mid_name'])){ $data['mid_name'] = $_POST['mid_name']; }
if(isset($_POST['lname'])){ $data['lname'] = $lname; }
if(isset($_POST['email'])){ $data['email'] = $email;}
//if(isset($_POST['dependents'])){ $data['dependents'] = $dependents; }
if(isset($_POST['qualification_type'])){ $data['qualification_type'] = $_POST['qualification_type']; }
if(isset($_POST['hire_type'])){ $data['hire_type'] = $hire_type; }
if(isset($_POST['date_of_re_hire'])){ $data['date_of_re_hire'] = $date_of_re_hire; }
if(isset($_POST['phone'])){ $data['phone'] = $phone; }
$data['caregiver_id']=''.str_pad($ion_user_id, 6, "0", STR_PAD_LEFT);
$data['ion_user_id'] = $ion_user_id;
$data['application_date'] = $application_date;
$data['created_by'] = '';
$data['form_status'] = 1;
$data['status'] = 1;
$pctg = array();
$pctg['form1']=0;$pctg['form2']=0;$pctg['form3']=0;$pctg['form4']=0;$pctg['form5']=0;$pctg['form6']=0;$pctg['form7']=0;$pctg['form8']=0;$pctg['form9']=0;$pctg['form10']=0;$pctg['form11']=0;
$data['from_tab_status_pctg'] = json_encode($pctg);
// _die($data);
$cargiverId=$this->Caregiver_model->insertNurse($data);
// _die($cargiverId);
$this->session->set_flashdata('caregiver_created', 'Caregiver created successfully.');
// _die($cargiverId);
// EMAIL TO CAREGIVER
$name=$fname." ".$lname;
$designation="caregiver";
$company="Hospital Management System";
$emaildata['emaildata'] = array(
'name' => $name,
'email' => $email,
'password' => $password,
'designation' => $designation,
'link' => base_url(),
'company' => $company
);
$message= $this->load->view('email_template_management/email_caregiver',$emaildata,TRUE);
$from = array(
'name' => 'HMS Admin',
'email' => 'admin@hms.com'
);
$subject ='Caregiver Account confirmation';
send_email($from,$email,$subject,$message);
sleep(3);
$remember = false;
if ($this->ion_auth->loginLinkedin($email, $remember))
{
redirect('/home');
}
else{
echo "<br>auth fail---------------------------------------------------";die;
}
redirect('/');
}
}
/*
| updated on 07-09-2021
|------------------------
| this contactMessage method was transfered
| here from website_setting controller
*/
function contactMessage()
{
$data['name']=$_POST['name'];
$data['email']=$_POST['email'];
$data['subject']=$_POST['subject'];
$data['message']=$_POST['message'];
// pre($data);
if(!empty($data))
{
$success=$this->Website_model->saveContactMessage($data);
if($success>0)
{
$this->session->set_flashdata('msg_success', 'Your message has been sent.');
}
else
{
$this->session->set_flashdata('msg_error', 'Your message not sent');
}
redirect('/#contact-section');
}
}
function setLanguageCookie()
{
$lang = $this->input->get('lang');
$this->load->helper(array('cookie'));
set_cookie('pref_language',$lang,'3600');
echo get_cookie('pref_language');
}
function register_patient(){
// pre($this->input->post());die();
$pid=$this->input->post("pid");
if($pid==''){
$email=$this->input->post('email');
$fname=$this->input->post('fname');
$lname=$this->input->post('lname');
$oauth_uid=$this->input->post('oauth_uid');
$oauth_provider=$this->input->post('oauth_provider');
$oauth_provider=$oauth_provider!=''?$oauth_provider:"general";
/*recaptcha validation*/
$recaptcha=$this->input->post('g-recaptcha-response');
$recaptcha_result=validateCaptcha($recaptcha);
if(intval($recaptcha_result["success"])!==1){
redirect(base_url()."auth/page?pg=seekingcare&captcha=invalid");
exit(0);
}
/*recaptcha validation*/
#if patient do not have email then create custom one
if($email==""){
for($i=1; $i<99999; $i++){
$email=strtolower($fname).'.'.generateRandomString(12)."@hms.com";
$checkEmail=$this->Referral_model->checkMail($email);
if($checkEmail==0){if($this->ion_auth->email_check($email)){continue;}else{break;}}else{continue;}
}
}
#if patient do not have email then create custom one
#Registration to the patient_details table & to the other tables related to the patient
$data = array();
$data["patient_email"]=$email;
if($this->input->post('fname')!=""){
$data['first_name']=$this->input->post('fname');
}if($this->input->post('lname')!=""){
$data['last_name']=$this->input->post('lname');
}if($this->input->post('phone')!=""){
$data['telephone']=$this->input->post('phone');
// $len_tel=strlen($data['telephone']);
// $telephone="";
// for($i=0;$i<$len_tel;$i++){
// $k=$data['telephone'][$i];
// if(is_numeric($k)){$telephone.=$data['telephone'][$i];}
// }
}
$data['patient_id']=rand(10000,99999);
$pctg = array();
$pctg['form1']=0;$pctg['form2']=0;$pctg['form3']=0;$pctg['form4']=0;$pctg['form5']=0;$pctg['form6']=0;
if($this->input->post('form_status')!=""){
$data['from_tab_status']=json_encode(array($this->input->post('form_status')));
$data['from_tab_status_pctg']=json_encode($pctg);
}if($this->ion_auth->email_check($email)){
$this->session->set_flashdata('feedback_error','This Email Address Is Already Registered');
redirect('/');
}
$pid=$this->Referral_model->insertNewReferral($data);
#Registration to the patient_details table & to the other tables related to the patient
#registration to the user
$username=$fname;
if($this->input->post('confirmpass')!=""){$password=$this->input->post('confirmpass');}
else{$password=mt_rand(100000, 999999);}
$dfg=5;
$this->ion_auth->register($username,$password,$email,$dfg,$oauth_uid,$oauth_provider);
$ion_user_id=$this->db->get_where('users', array('email' => $email))->row()->id;
#registration to the user
#update the patient table with ion_user_id
$data=array();
$data['ion_user_id']=$ion_user_id;
$this->Referral_model->updateReferralTable($data,'patient_details',$pid);
#update the patient table with ion_user_id
#After Registration Send an activation Mail to the Patient Registered Email Id
$name=$fname." ".$lname;
$designation="patient";
$company="Hospital Management System";
$emaildata['emaildata']=array(
'name' => $name,
'email' => $email,
'password' => $password,
'designation' => $designation,
'link' => base_url(),
'company' => $company
);
$message = $this->load->view('email_template_management/email_patient',$emaildata,TRUE);
$from=array(
'name' => 'HMS Admin',
'email' => 'admin@hms.com'
);
$subject ='Patient Account confirmation';
send_email($from,$email,$subject,$message);
#After Registration Send an activation Mail to the Patient Registered Email Id
#redirection to the login page
redirect(base_url()."auth/login");
#redirection to the login page
}
}
#authentication-registration
function hms_check_user_email(){
try{
$request=(object)($this->input->get());
$email=isset($request->email)?trim($request->email):'';
if($email!=""){
if($this->ion_auth->email_check($email)){
$response=json_encode([
'status'=>200,
'msg'=>'email exists'
]);
}else{
$response=json_encode([
'status'=>200,
'msg'=>'email does not exist'
]);
}
}else{
$response=json_encode([
'status'=>400,
'msg'=>'invalid email'
]);
}
echo $response;
}catch(Exception $e){
$getMsg="Auth - hms_check_user_email: ".$e->getMessage();
echo $getMsg;
}
}
function hms_check_patient_email(){
try{
$request=(object)($this->input->get());
$email=isset($request->email)?trim($request->email):'';
if($email!=""){
if($this->ion_auth->email_check($email) || $this->ion_auth->patient_email_check($email)){
$response=json_encode([
'status'=>200,
'msg'=>'email exists'
]);
}else{
$response=json_encode([
'status'=>200,
'msg'=>'email does not exist'
]);
}
}else{
$response=json_encode([
'status'=>400,
'msg'=>'invalid email'
]);
}
echo $response;
}catch(Exception $e){
$getMsg="Auth - hms_check_patient_email: ".$e->getMessage();
echo $getMsg;
}
}
function hms_check_nurse_email(){
try{
$request=(object)($this->input->get());
$email=isset($request->email)?trim($request->email):'';
if($email!=""){
if($this->ion_auth->email_check($email) || $this->ion_auth->nurse_email_check($email)){
$response=json_encode([
'status'=>200,
'msg'=>'email exists',
'data'=>true
]);
}else{
$response=json_encode([
'status'=>200,
'msg'=>'email does not exist',
'data'=>false
]);
}
}else{
$response=json_encode([
'status'=>400,
'msg'=>'invalid email'
]);
}
echo $response;
}catch(Exception $e){
$getMsg="Auth - hms_check_nurse_email: ".$e->getMessage();
echo $getMsg;
}
}
function hms_patient_sign_up(){
try{
$request=(object)($this->input->post());
$req_data=(object)[];
$req_data->fname=isset($request->fname)?trim($request->fname):'';
$req_data->lname=isset($request->lname)?trim($request->lname):'';
$req_data->via=isset($request->via)?trim($request->via):'';
$req_data->email=isset($request->email)?trim($request->email):'';
$req_data->phone=isset($request->phone)?trim($request->phone):'';
$req_data->group=5;
$req_data->password=isset($request->password)?trim($request->password):'';
$req_data->confirm_password=isset($request->confirmpass)?trim($request->confirmpass):'';
$req_data->oauth_uid=isset($request->oauth_uid)?trim($request->oauth_uid):null;
$req_data->oauth_provider=isset($request->oauth_provider)?trim($request->oauth_provider):'general';
$req_data->form_status=isset($request->form_status)?trim($request->form_status):"0";
#validations
$errors=[];
$recaptcha=isset($request->{'g-recaptcha-response'})?trim($request->{'g-recaptcha-response'}):'';
$resCaptcha=(object)(validateCaptcha($recaptcha));
if(isset($resCaptcha->success) && intval($resCaptcha->success)!==1){
$errors[]="Invalid re-captcha.";
}
$this->load->library('form_validation');
$this->form_validation->set_rules('fname', 'First Name', 'required|trim');
$this->form_validation->set_rules('lname', 'Last Name', 'required|trim');
if(in_array($req_data->via,['email','phone'])){
if($req_data->via=='email'){
$this->form_validation->set_rules('email', 'Email', 'required|valid_email');
if($this->ion_auth->email_check($req_data->email) ||
$this->ion_auth->patient_email_check($req_data->email)
){
$errors[]='Email Id already exists.';
}
}
if($req_data->via=='phone'){
$this->form_validation->set_rules('phone', 'Phone Number', 'required|alpha_numeric_number_validation');
set_custom_error_message($this->form_validation);
}
}else{
$errors[]="Please choose between email or phone to get register.";
}
$this->form_validation->set_rules('password', 'Password', 'required|min_length[6]');
$this->form_validation->set_rules('confirmpass', 'Confirm Password', 'required|min_length[6]');
if($this->form_validation->run()===FALSE) {
$basic_errors=preg_split('/\n/', strip_tags(validation_errors()), -1, PREG_SPLIT_NO_EMPTY);
$errors=array_merge($errors,$basic_errors);
// $errors=[...$errors,...$basic_errors];
}
if($req_data->password!==$req_data->confirm_password){
$errors[]="The Confirm Password didn't match the password.";
}
#validations
if(isset($errors) && !empty($errors) && count($errors)>0){
$response=json_encode([
'status'=>400,
'msg'=>'validations failed',
'data'=>$errors
]);
}else{
if($req_data->via=='phone'){
$req_data->email=$this->ion_auth->generate_unique_user_mail($req_data->fname);
}
$resData=$this->ion_auth->push_user_verfification($req_data);
if($resData['status']==200){
$resLink=$this->hms_user_verification_send_link($resData['data']['inserted_id']);
$response=json_encode($resLink);
}else{
$response=json_encode($resData);
}
}
echo $response;
}catch(Exception $e){
$getMsg="Auth - hms_patient_sign_up: ".$e->getMessage();
echo $getMsg;
}
}
function hms_caregiver_sign_up(){
try{
$request=(object)($this->input->post());
$req_data=(object)[];
$req_data->fname=isset($request->fname)?trim($request->fname):'';
$req_data->lname=isset($request->lname)?trim($request->lname):'';
$req_data->via=isset($request->via)?trim($request->via):'';
$req_data->email=isset($request->email)?trim($request->email):'';
$req_data->phone=isset($request->phone)?trim($request->phone):'';
$req_data->qualification_type=isset($request->qualification_type)?intval($request->qualification_type):'';
$req_data->group=6;
$req_data->password=isset($request->password)?trim($request->password):'';
$req_data->confirm_password=isset($request->confirmpass)?trim($request->confirmpass):'';
$req_data->oauth_uid=isset($request->oauth_uid)?trim($request->oauth_uid):null;
$req_data->oauth_provider=isset($request->oauth_provider)?trim($request->oauth_provider):'general';
$req_data->form_status=isset($request->form_status)?trim($request->form_status):"0";
#validations
$errors=[];
$recaptcha=isset($request->{'g-recaptcha-response'})?trim($request->{'g-recaptcha-response'}):'';
$resCaptcha=(object)(validateCaptcha($recaptcha));
if(isset($resCaptcha->success) && intval($resCaptcha->success)!==1){
$errors[]="Invalid re-captcha.";
}
$this->load->library('form_validation');
$this->form_validation->set_rules('fname', 'First Name', 'required|trim');
$this->form_validation->set_rules('lname', 'Last Name', 'required|trim');
if(in_array($req_data->via,['email','phone'])){
if($req_data->via=='email'){
$this->form_validation->set_rules('email', 'Email', 'required|valid_email');
if($this->ion_auth->email_check($req_data->email) ||
$this->ion_auth->nurse_email_check($req_data->email)
){
$errors[]='Email Id already exists.';
}
}
if($req_data->via=='phone'){
$this->form_validation->set_rules('phone', 'Phone Number', 'required|alpha_numeric_number_validation');
set_custom_error_message($this->form_validation);
}
}else{
$errors[]="Please choose between email or phone to get register.";
}
$this->form_validation->set_rules('password', 'Password', 'required|min_length[6]');
$this->form_validation->set_rules('confirmpass', 'Confirm Password', 'required|min_length[6]');
if($this->form_validation->run()===FALSE) {
$basic_errors=preg_split('/\n/', strip_tags(validation_errors()), -1, PREG_SPLIT_NO_EMPTY);
$errors=array_merge($errors,$basic_errors);
// $errors=[...$errors,...$basic_errors];
}
if($req_data->password!==$req_data->confirm_password){
$errors[]="The Confirm Password didn't match the password.";
}
#validations
if(isset($errors) && !empty($errors) && count($errors)>0){
$response=json_encode([
'status'=>400,
'msg'=>'validations failed',
'data'=>$errors
]);
}else{
if($req_data->via=='phone'){
$req_data->email=$this->ion_auth->generate_unique_user_mail($req_data->fname);
}
$resData=$this->ion_auth->push_user_verfification($req_data);
if($resData['status']==200){
$resLink=$this->hms_user_verification_send_link($resData['data']['inserted_id']);
$response=json_encode($resLink);
}else{
$response=json_encode($resData);
}
}
echo $response;
}catch(Exception $e){
$getMsg="Auth - hms_caregiver_sign_up: ".$e->getMessage();
echo $getMsg;
}
}
function hms_user_verification_send_link($id){
try{
$data=$this->ion_auth->get_user_verification_details_byid($id);
$data->activation_link=base_url().$data->link.'?token='.$data->token;
$send=isset($data->send)&&$data->send!=""?json_decode($data->send):(object)[];
$via=isset($send->via)?$send->via:'';
$code=isset($send->via)?$send->code:'';
if($via=='email' && $code!=""){
/*send email*/
// $email="naran@sentientgeeks.com";
$email=$code;
$emaildata['emaildata']=array(
'otp'=>$data->otp,
'link'=>$data->activation_link
);
$mailBody=$this->load->view('email_template_management/user_verification_link',$emaildata,TRUE);
$message=html_entity_decode($mailBody);
$from=array(
'name'=>'WeCuro',
'email'=>'info@wecuro.com'
);
$subject='Email Verification Code:'.$data->otp;
$email_res=send_email($from,$email,$subject,$message);
/*send email*/
$response=[
'status'=>200,
'msg'=>'email sent with verification link and otp',
'data'=>[
'link'=>$data->activation_link,
'to'=>$code,
'email_res'=>$email_res
]
];
}
else if($via=='phone' && $code!=""){
$this->load->helper('sms_helper');
$phone=extract_number_from_string($code);
$message='Your WeCuro verification code is: '.$data->otp;
$sms_res=send_sms(''.COUNTRY_CODE,$phone,$message);
$response=[
'status'=>200,
'msg'=>'sms sent with verification link and otp',
'data'=>[
'link'=>$data->activation_link,
'to'=>$phone,
'sms_res'=>$sms_res
]
];
}
else{
$response=[
'status'=>400,
'msg'=>"verification link and otp couldn't be sent"
];
}
return $response;
}catch(Exception $e){
$getMsg="Auth - hms_user_verification_send_link: ".$e->getMessage();
echo $getMsg;
}
}
function verification(){
try{
$requestToken=$this->input->get('token');
$fetchData=$this->ion_auth->get_user_verification_details_bytoken($requestToken);
$data=(object)[
'verification_details'=>(object)[
'token'=>isset($fetchData->token)?$fetchData->token:null,
'send'=>isset($fetchData->send)?$fetchData->send:null,
'created_on'=>isset($fetchData->created_on)?$fetchData->created_on:null,
'expiration_on'=>isset($fetchData->expiration_on)?$fetchData->expiration_on:null
]
];
$this->load->view('frontend/pages/verification',$data);
}catch(Exception $e){
$getMsg="Auth - verification: ".$e->getMessage();
echo $getMsg;
}
}
function hms_user_verification_resend_otp(){
try{
$requestToken=$this->input->post('token');
$update=$this->ion_auth->update_user_verification_otp_bytoken($requestToken);
if($update){
$fetchData=$this->ion_auth->get_user_verification_details_bytoken($requestToken);
$resLink=$this->hms_user_verification_send_link($fetchData->id);
$response=json_encode($resLink);
}
else{
$response=json_encode([
'status'=>400,
'msg'=>'otp not resend'
]);
}
echo $response;
}catch(Exception $e){
$getMsg="Auth - hms_user_verification_resend_otp: ".$e->getMessage();
echo $getMsg;
}
}
function hms_user_verification_authenticate(){
try{
$request=(object)($this->input->post());
$token=isset($request->token)?trim($request->token):'';
$otp=isset($request->otp)?intval($request->otp):0;
$fetchData=$this->ion_auth->get_user_verification_details_bytoken($token);
$update=$this->ion_auth->user_verification_authenticate($token,$otp);
if($update){
$guest_details=isset($fetchData->details)&&$fetchData->details!=""?json_decode($fetchData->details):(object)[];
$send_details=isset($fetchData->send)&&$fetchData->send!=""?json_decode($fetchData->send):(object)[];
if(isset($guest_details->group) && intval($guest_details->group)==5){
$auth_ion_res=$this->hms_register_guest_as_patient($guest_details,$send_details);
}else if(isset($guest_details->group) && intval($guest_details->group)==6){
$auth_ion_res=$this->hms_register_guest_as_caregiver($guest_details,$send_details);
}
if($auth_ion_res>0){
$this->ion_auth->loginLinkedin($guest_details->email, false);
}
$response=json_encode([
'status'=>200,
'msg'=>'authenticated successfully'
]);
}
else{
$response=json_encode([
'status'=>400,
'msg'=>'invalid otp'
]);
}
echo $response;
}catch(Exception $e){
$getMsg="Auth - hms_user_verification_authenticate: ".$e->getMessage();
echo $getMsg;
}
}
function hms_register_guest_as_patient($details,$send){
try{
if(!$this->ion_auth->email_check($details->email)){
$ion_user_id=$this->ion_auth->register(
$details->first_name,
123,
$details->email,
$details->group,
$details->oauth_uid,
$details->oauth_provider
);
$this->db->where('id', $ion_user_id);
$this->db->update('users', ['password'=>$details->confirm_password]);
$data=array();
$data["patient_email"]=$details->email;
$data['first_name']=$details->first_name;
$data['last_name']=$details->last_name;
$data['telephone']=$details->phone;
$data['patient_id']=rand(10000,99999);
$data['from_tab_status']=json_encode([$details->form_status]);
$data['from_tab_status_pctg']=json_encode([
'form1'=>0,
'form2'=>0,
'form3'=>0,
'form4'=>0,
'form5'=>0,
'form6'=>0
]);
$data['ion_user_id']=$ion_user_id;
$pid=$this->Referral_model->insertNewReferral($data);
if($ion_user_id>0 && $pid>0){
$ion_username=$this->db->get_where('users', array('id' =>$ion_user_id))->row()->username;
if($send->via=='email'){
#send-email
$emaildata['emaildata']=array(
'name'=>$details->first_name." ".$details->last_name,
'username'=>$ion_username
);
$message=$this->load->view('email_template_management/email_patient',$emaildata,TRUE);
$from=array(
'name'=>'WeCuro',
'email'=>'info@wecuro.com'
);
$subject='Patient Account Confirmation';
send_email($from,$send->code,$subject,$message);
#send-email
}else if($send->via=='phone'){
#send-sms
$this->load->helper('sms_helper');
$phone=extract_number_from_string($send->code);
$message='WeCuro account has been created successfully as a Patient. Your Username is: '.$ion_username;
send_sms(''.COUNTRY_CODE,$phone,$message);
#send-sms
}
}
return $ion_user_id;
}else{
return false;
}
}catch(Exception $e){
$getMsg="Auth - hms_register_guest_as_patient: ".$e->getMessage();
echo $getMsg;
}
}
function hms_register_guest_as_caregiver($details,$send){
try{
if(!$this->ion_auth->email_check($details->email)){
$ion_user_id=$this->ion_auth->register(
$details->first_name,
123,
$details->email,
$details->group,
$details->oauth_uid,
$details->oauth_provider
);
$this->db->where('id', $ion_user_id);
$this->db->update('users', ['password'=>$details->confirm_password]);
$data=array();
$data["email"]=$send->via=='email'?$details->email:'';
$data['fname']=$details->first_name;
$data['lname']=$details->last_name;
$data['phone']=$details->phone;
$data['qualification_type']=$details->qualification_type;
$data['hire_type']='New Hire';
$data['caregiver_id']=''.str_pad($ion_user_id, 6, "0", STR_PAD_LEFT);
$data['ion_user_id']=$ion_user_id;
$data['application_date']=date('Y-m-d',now());
$data['created_by']='';
// $data['form_status']=$details->form_status;
$data['status']=1;
$data['from_tab_status_pctg']=json_encode([
'form1'=>0,
'form2'=>0,
'form3'=>0,
'form4'=>0,
'form5'=>0,
'form6'=>0,
'form7'=>0,
'form8'=>0,
'form9'=>0,
'form10'=>0,
'form11'=>0
]);
$cid=$this->Caregiver_model->insertNurse($data);
if($ion_user_id>0 && $cid>0){
$ion_username=$this->db->get_where('users', array('id' =>$ion_user_id))->row()->username;
if($send->via=='email'){
#send-email
$emaildata['emaildata']=array(
'name'=>$details->first_name." ".$details->last_name,
'username'=>$ion_username
);
$message=$this->load->view('email_template_management/email_caregiver',$emaildata,TRUE);
$from=array(
'name'=>'WeCuro',
'email'=>'info@wecuro.com'
);
$subject='Caregiver Account Confirmation';
send_email($from,$send->code,$subject,$message);
#send-email
}else if($send->via=='phone'){
#send-sms
$this->load->helper('sms_helper');
$phone=extract_number_from_string($send->code);
$message='WeCuro account has been created successfully as a Caregiver. Your Username is: '.$ion_username;
send_sms(''.COUNTRY_CODE,$phone,$message);
#send-sms
}
}
return $ion_user_id;
}else{
return false;
}
}catch(Exception $e){
$getMsg="Auth - hms_register_guest_as_caregiver: ".$e->getMessage();
echo $getMsg;
}
}
#authentication-registration
}