load->library( 'Google' );
$this->load->model( 'Settings_Model' );
define( 'LANG', $this->Settings_Model->get_crm_lang() );
$this->lang->load( LANG.'_default', LANG);
$this->lang->load( LANG, LANG );
$settings = $this->Settings_Model->get_settings( 'ciuis' );
$timezone = $settings[ 'default_timezone' ];
date_default_timezone_set( $timezone );
$this->load->model( 'Staff_Model' );
$this->load->model( 'Emails_Model' );
$this->load->library( 'form_validation' );
$this->form_validation->set_error_delimiters( '
', '
' );
$this->inactive = $this->config->item( 'inactive' );
$this->roles = $this->config->item( 'roles' );
$timezone = $settings[ 'default_timezone' ];
date_default_timezone_set( $timezone );
define( 'setting', $this->Settings_Model->get_settings_ciuis_origin());
define( 'rebrand', load_config());
}
function index() {
if (empty($apl_core_notifications=aplCheckSettings())) {
if (!empty(aplGetLicenseData()) && is_array(aplGetLicenseData())) {
$verifyRemoteCheck = aplVerifyLicense();
if ($verifyRemoteCheck['notification_case'] != 'notification_license_ok') {
$this->session->set_flashdata( 'ntf4', 'Could not verify your licence, please verify your licence.' );
$this->session->set_flashdata( 'error', 'Could not verify your licence, please verify your licence.' );
redirect(base_url('login/license'));
} else {
$settings = $this->Settings_Model->get_settings( 'ciuis' );
if ( $settings[ 'two_factor_authentication' ] == 1 ) {
if ( $this->session->userdata( 'LoginOK' ) && $this->session->userdata( '2FAVerify' ) ) {
redirect( base_url() . 'panel' );
} else {
$this->show_login( true );
}
} else {
if ( $this->session->userdata( 'LoginOK' ) ) {
redirect( base_url() . 'panel' );
} else {
$this->show_login( true );
}
}
}
} else {
$this->session->set_flashdata( 'ntf4', 'Your Envato license is not installed' );
$this->session->set_flashdata( 'error', 'Your Envato license is not installed' );
redirect(base_url('login/license'));
}
} else {
$this->session->set_flashdata( 'ntf4', 'Your Envato license is not installed' );
$this->session->set_flashdata( 'error', 'Your Envato license is not installed' );
redirect(base_url('login/license'));
}
}
function auth() {
$settings = $this->Settings_Model->get_settings( 'ciuis' );
$this->load->model( 'Login_Model' );
$email = $this->input->post( 'email' );
$password = $this->input->post( 'password' );
$clean = $this->security->xss_clean( $email );
if ( $userInfo = $this->Staff_Model->getUserInfoByEmail( $clean ) ) {
if ( $userInfo->inactive != $this->inactive[ 1 ] ) { //if inactive is not approved
$this->session->set_flashdata( 'ntf4', lang( 'customerinactiveaccount' ) );
redirect( site_url() . 'login' );
}
} else {
$this->session->set_flashdata( 'ntf4', lang( 'customercanffindmail' ) );
redirect( site_url() . 'login' );
}
if ( $email && $password && $this->Login_Model->validate_user( $email, $password ) ) {
if ( $settings[ 'two_factor_authentication' ] == 1 ) {
redirect( base_url( 'login/verify_login' ) );
} else {
$this->session->set_flashdata( 'login_notification', lang( 'welcomemessagetwo' ));
if ( $this->session->userdata( 'admin' ) ) {
$this->session->set_flashdata( 'admin_notification', lang( 'adminwelcome' ));
}
$this->Staff_Model->update_language($this->session->usr_id, $this->input->post('language'));
$this->session->set_userdata(array('language' => $this->input->post('language')));
$staffname = $this->session->staffname;
$loggedinuserid = $this->session->usr_id;
$this->config->set_item('sess_expire_on_close', '0');
$this->db->insert( 'logs', array(
'date' => date( 'Y-m-d H:i:s' ),
'detail' => ( ' ' . $staffname . ' ' . lang( 'loggedinthesystem' )),
'staff_id' => $loggedinuserid
) );
redirect( base_url( 'panel' ) );
}
} else {
$this->show_login( true );
}
}
function verify_login() {
$this->load->model( 'Login_Model' );
$data[ 'secret' ] = $this->google->createSecret();
$website = "http://localhost:8888/googleautenticador/";
$data[ 'url_qr_code' ] = $this->google->getQRCodeGoogleUrl( $this->session->userdata[ 'email' ], $data[ 'secret' ], $website );
if ( isset( $_POST ) && count( $_POST ) > 0 ) {
$secret = $this->input->post( 'secret_code' );
$code_verificador = $this->input->post( 'code' );
$resultado = $this->google->verifyCode( $secret, $code_verificador, 0 );
if ( $resultado ) {
$this->Login_Model->two_factor_authentication();
$this->session->set_flashdata( 'login_notification', '' . lang( 'welcomemessagetwo' ) . '' );
if ( $this->session->userdata( 'admin' ) ) {
$this->session->set_flashdata( 'admin_notification', '' . lang( 'adminwelcome' ) . '' );
}
$staffname = $this->session->staffname;
$loggedinuserid = $this->session->usr_id;
$this->db->insert( 'logs', array(
'date' => date( 'Y-m-d H:i:s' ),
'detail' => ( ' ' . $staffname . ' ' . lang( 'loggedinthesystem' ) . '' ),
'staff_id' => $loggedinuserid
) );
redirect( base_url( 'panel' ) );
} else {
$this->session->sess_destroy();
redirect( base_url( 'login' ) );
}
} else {
$this->load->view( 'login/verify', $data );
}
}
function show_login( $show_error = false ) {
$data[ 'error' ] = $show_error;
$languages = $this->Settings_Model->get_languages();
$lang = array();
foreach ($languages as $language) {
$lang[] = array(
'name' => lang($language['name']),
'foldername' => $language['foldername'],
'id' => $language['id'],
'langcode' => $language['langcode']
);
}
$data['languages'] = $lang;
$this->load->helper( 'form' );
$this->load->view( 'login/login', $data );
}
function logout() {
$this->session->sess_destroy();
$this->index();
}
function showphpinfo() {
echo phpinfo();
}
public function forgot() {
$this->form_validation->set_rules( 'email', 'Email', 'required|valid_email' );
if ( $this->form_validation->run() == FALSE ) {
$this->load->view( 'login/forgot' );
} else {
$email = $this->input->post( 'email' );
$clean = $this->security->xss_clean( $email );
$userInfo = $this->Staff_Model->getUserInfoByEmail( $clean );
if ( !$userInfo ) {
$this->session->set_flashdata( 'ntf4', lang( 'customercanffindmail' ) );
redirect( site_url() . 'login' );
}
if ( $userInfo->inactive != $this->inactive[ 1 ] ) { //if inactive is not approved
$this->session->set_flashdata( 'ntf4', lang( 'customerinactiveaccount' ) );
redirect( site_url() . 'login' );
}
$token = $this->Staff_Model->insertToken( $userInfo->id );
$nameis = $userInfo->staffname;
$qstring = $this->base64url_encode( $token );
$url = site_url() . 'login/reset_password/token/' . $qstring;
$template = $this->Emails_Model->get_template('staff', 'forgot_password');
$message_vars = array(
'{staffname}' => $userInfo->staffname,
'{password_url}' => $url,
'{email_signature}' => $template['from_name'],
'{company_name}' => setting['company'],
'{company_email}' => setting['email'],
'{site_url}' => site_url(),
'{logo}' => rebrand['app_logo'],
'{footer_logo}' => rebrand['nav_logo'],
'{email_banner}' => rebrand['email_banner'],
);
$subject = strtr($template['subject'], $message_vars);
$message = strtr($template['message'], $message_vars);
$param = array(
'from_name' => $template['from_name'],
'email' => $clean,
'subject' => $subject,
'message' => $message,
'created' => date( "Y.m.d H:i:s" ),
'status' => 0
);
if ($clean) {
$this->db->insert( 'email_queue', $param );
}
$this->load->library('mail');
$this->mail->send_email($clean, $template['from_name'], $subject, $message);
$this->session->set_flashdata( 'ntf1', '' . lang( 'customerpasswordsend' ) . '' );
redirect( 'login' );
}
}
public function reset_password() {
$token = $this->base64url_decode( $this->uri->segment( 4 ) );
$cleanToken = $this->security->xss_clean( $token );
$user_info = $this->Staff_Model->isTokenValid( $cleanToken ); //either false or array();
if ( !$user_info ) {
$this->session->set_flashdata( 'ntf1', lang( 'tokenexpired' ) );
redirect( site_url() . 'login' );
}
$data = array(
'firstName' => $user_info->staffname,
'email' => $user_info->email,
//'user_id'=>$user_info->id,
'token' => $this->base64url_encode( $token )
);
$this->form_validation->set_rules( 'password', 'Password', 'required|min_length[5]' );
$this->form_validation->set_rules( 'passconf', 'Password Confirmation', 'required|matches[password]' );
if ( $this->form_validation->run() == FALSE ) {
$this->load->view( 'login/reset_password', $data );
} else {
$post = $this->input->post( NULL, TRUE );
$cleanPost = $this->security->xss_clean( $post );
$hashed = md5( $cleanPost[ 'password' ] );
$cleanPost[ 'password' ] = $hashed;
$cleanPost[ 'user_id' ] = $user_info->id;
unset( $cleanPost[ 'passconf' ] );
if ( !$this->Staff_Model->updatePassword( $cleanPost ) ) {
$this->session->set_flashdata( 'ntf1', lang( 'problemupdatepassword' ) );
} else {
$this->session->set_flashdata( 'ntf1', lang( 'passwordupdated' ) );
}
$template = $this->Emails_Model->get_template('staff', 'password_reset');
$message_vars = array(
'{staff_email}' => $user_info->email,
'{staffname}' => $user_info->staffname,
'{email_signature}' => $template['from_name'],
'{company_name}' => setting['company'],
'{company_email}' => setting['email'],
'{site_url}' => site_url(),
'{logo}' => rebrand['app_logo'],
'{footer_logo}' => rebrand['nav_logo'],
'{email_banner}' => rebrand['email_banner'],
);
$subject = strtr($template['subject'], $message_vars);
$message = strtr($template['message'], $message_vars);
$param = array(
'from_name' => $template['from_name'],
'email' => $user_info->email,
'subject' => $subject,
'message' => $message,
'created' => date( "Y.m.d H:i:s" ),
'status' => 0
);
if ($user_info->email) {
$this->db->insert( 'email_queue', $param );
}
$this->load->library('mail');
$this->mail->send_email($user_info->email, $template['from_name'], $subject, $message);
redirect( site_url() . 'login' );
}
}
function license() {
$data['title'] = 'Verify Licence';
$this->load->view('login/licence_verify_input', $data);
}
function verify_licence() {
if (isset( $_POST ) && count( $_POST ) > 0) {
$hasError = false;
$message = '';
if ($this->input->post('license') == '' || !$this->input->post('license')) {
$hasError = true;
$message = 'Please enter your Envato Purchase Code';
} else if (strlen($this->input->post('license')) < 5) {
$hasError = true;
$message = 'Please enter correct Envato Purchase Code';
}
if ($hasError) {
$this->session->set_flashdata('error', $message);
$this->session->set_flashdata('ntf4', $message);
redirect(base_url('login/license'));
}
if (!$hasError) {
$appUrl = 'http'.(empty($_SERVER['HTTPS'])?'':'s').'://'.aplGetRootUrl(aplGetCurrentUrl(), 1, 1, 0, 1);
aplVerifyEnvatoPurchase($this->input->post('license'));
$license = aplInstallLicense($appUrl, '', $this->input->post('license'));
if ($license['notification_text'] == 'License OK') {
$this->session->set_flashdata('ntf1', 'Your Envato License has been updated successfully!');
redirect(base_url('login'));
} else {
$this->session->set_flashdata('ntf4', $license['notification_text']);
$this->session->set_flashdata('error', $license['notification_text']);
redirect(base_url('login/license'));
}
}
}
//if (isset($_POST['license']) && !empty($_POST['license'])) {
//$appUrl = 'http'.(empty($_SERVER['HTTPS'])?'':'s').'://'.aplGetRootUrl(aplGetCurrentUrl(), 1, 1, 0, 1);
//echo $appUrl;
//print_r(aplCheckData());
//echo $appUrl;
//echo aplGetRawDomain($appUrl);
//print_r(json_encode(aplVerifyEnvatoPurchase('05256ecf-e10c-45cc-8afc-d0846397c093')));
//print_r(aplCheckUserInput($appUrl, '', '131ca1c8-df08-4436-b771-3a34deb5dbfa'));
//print_r(aplInstallLicense($appUrl, '', '05256ecf-e10c-45cc-8afc-d0846397c093'));
//print_r(aplGetLicenseData());
//print_r(aplVerifyLicense());
//print_r(aplGetLicenseData());
//echo print_r(aplVerifyEnvatoPurchase('05256ecf-e10c-45cc-8afc-d0846397c093'));
}
public function base64url_encode( $data ) {
return rtrim( strtr( base64_encode( $data ), '+/', '-_' ), '=' );
}
public function base64url_decode( $data ) {
return base64_decode( str_pad( strtr( $data, '-_', '+/' ), strlen( $data ) % 4, '=', STR_PAD_RIGHT ) );
}
}