This commit is contained in:
2022-04-03 14:10:01 -04:00
parent a9b09dc416
commit 266b9ddad8
15 changed files with 608 additions and 270 deletions
+172 -26
View File
@@ -1,5 +1,13 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
//Include Hybridauth autoloader
require APPPATH . '/third_party/hybridauth/autoload.php';
//Import Hybridauth's namespace
use Hybridauth\Hybridauth;
class Login extends WRB_Controller {
public function __construct() {
@@ -48,7 +56,7 @@ class Login extends WRB_Controller {
$out = array();
$res = $this->backend_model->wrenchboard_api($data, $out);
$is_live = $this->backend_model->cfgReadChar("system.live");
// print_r($out);
// print_r($out);
if ($res == PHP_LOGIN_OK) {
$this->load->model('account_model');
$ret = $this->account_model->username_data($data);
@@ -90,30 +98,14 @@ class Login extends WRB_Controller {
} else {
echo validation_errors();
}
if ($this->lib_login->is_authenticated()) {
$fb_data = $this->lib_login->getData($this->lib_login->get_access_token());
if (isset($fb_data['me'])) {
$user = $fb_data['me'];
$proceed = false;
//$data["login_message"] = $user["id"]."/".$user["name"]."/".$user["email"]."<a href='".$this->lib_login->getLogoutUrl()."'>Logout</a>";
$q = "SELECT * FROM members WHERE lower(email)=lower('" . $user["name"] . "') AND password IS NULL AND fb_id='" . $user["id"] . "'";
$query = $this->db->query($q);
if (count($query->result_array)) {
// Account exists
$proceed = true;
} else {
$q = "SELECT * FROM members WHERE lower(email)=lower('" . $user["name"] . "')";
$query = $this->db->query($q);
if (count($query->result_array)) {
$data["login_message"] = "The e-mail " . $user["email"] . " is already registered. You should login with your username and password.";
} else {
// Create account
$proceed = true;
}
}
list($proceed, $data) = $this->checkUserExists($user, $data);
if ($proceed) {
$name = (string) $user["name"];
if (trim($name) == "")
@@ -169,12 +161,26 @@ class Login extends WRB_Controller {
//----- long out $this->load->view('templates/header_boxed', $data);
//$this->load->view('users/view_login', $data);
//$this->load->view('users/view_external_footer');
// Load Hybridauth's helper
$this->load->helper('hybridauth');
// Instantiate Hybridauth's classes
$hybrid = new Hybridauth(get_hybridauth_config());
// Get login links
$login_links = get_hybridauth_links($hybrid, $this->router);
// Pass login links to html template
$data['login_links'] = $login_links;
// Render html template
$this->load->view('site3/external/view_home',$data);
}
//<a href="/password_recovery">Forgot Password ?</a>
//<a href="/password_recovery">Forgot Password ?</a>
public function refreshAccountDetail($member_id) {
public function refreshAccountDetail($member_id) {
$this->load->model('account_model');
$qr = $this->account_model->loadAccountData($member_id);
$this->load->model('account_model');
@@ -184,13 +190,153 @@ class Login extends WRB_Controller {
$_SESSION['active_task'] = $this->account_model->loadActiveTaskCount($member_id);
}
private function checkUserExists($user, $data)
{
$proceed = false;
//$data["login_message"] = $user["id"]."/".$user["name"]."/".$user["email"]."<a href='".$this->lib_login->getLogoutUrl()."'>Logout</a>";
$q = "SELECT * FROM members WHERE lower(email)=lower('" . $user["name"] . "') AND password IS NULL AND fb_id='" . $user["id"] . "'";
$query = $this->db->query($q);
if (count($query->result_array)) {
// Account exists
$proceed = true;
} else {
$q = "SELECT * FROM members WHERE lower(email)=lower('" . $user["name"] . "')";
$query = $this->db->query($q);
if (count($query->result_array)) {
$data["login_message"] = "The e-mail " . $user["email"] . " is already registered. You should login with your username and password.";
} else {
// Create account
$proceed = true;
}
}
return array($proceed, $data);
}
public function logout() {
$this->lib_login->destroy_session();
redirect('login', redirect);
}
//Processes social login
function auth($provider = NULL)
{
// Load Hybridauth's helper
$this->load->helper('hybridauth');
$service = NULL;
try
{
//Instantiate Hybridauth's classes
$hybrid = new Hybridauth(get_hybridauth_config());
//Check if given provider is enabled
if ((isset($provider)) && in_array($provider, $hybrid->getProviders()))
{
$this->session->set_userdata('provider', $provider);
}
//Update variable with the valid provider
$provider = $this->session->userdata('provider');
if ($provider)
{
$service = $hybrid->authenticate($provider);
if ($service->isConnected())
{
//Get user profile
$profile = $service->getUserProfile();
//Get user contacts
$contacts = $service->getUserContacts();
/*
Disconnect the service else HA would reuse stored session data
rather making a fresh request in case the user has denied permissions
in the previous authorization request
*/
$service->disconnect();
$this->session->unset_userdata('provider');
//Display the profile data
echo 'Name: ' . $profile->displayName;
print_r($profile);
exit();
/*
$user = array(
'id' => '',
'name' => '',
'email' => ''
);
list($proceed, $data) = $this->checkUserExists($user, $data);
// TODO
if ($proceed) {
$name = (string) $user["name"];
if (trim($name) == "")
$name = strtok($user["email"], "@");
$data['fb_id'] = $user["id"];
$data['firstname'] = strtok($name, " ");
$data['lastname'] = strtok(" ");
$data['email'] = $user["email"];
$data['sessionid'] = rand(10000, 99999) . "A" . rand(10000, 99999);
$data['action'] = WRENCHBOARD_FACEBOOK_LOGIN;
$this->load->model('backend_model');
$out = array();
$res = $this->backend_model->wrenchboard_api($data, $out);
if ($res == PHP_LOGIN_OK) {
$this->load->model('account_model');
$ret = $this->account_model->username_data($out);
if ($res !== false) {
$data["login_message"] = "Welcome...";
// yes person has an account
$_SESSION['session_id'] = $out["session"];
$_SESSION['username'] = $ret->username;
$_SESSION['name'] = $ret->username;
$_SESSION['firstname'] = $ret->firstname;
$_SESSION['lastname'] = $ret->lastname;
$_SESSION['email'] = $ret->email;
$_SESSION['member_id'] = $ret->id;
$_SESSION['log_count'] = 0;
$_SESSION['mesaage_count'] = 0;
$this->findOffers($_SESSION['email']);
$_SESSION['message_snapshot'] = $this->myMessagesSnapshot();
$this->logUser('Account login');
$this->refreshAccountDetail($_SESSION['member_id']);
$this->getSessionArray();
$this->excudedEmails();
redirect('dash');
}
}
}
// */
}
else
{
$this->session->set_flashdata('showmsg', array('msg' => 'Sorry! We couldn\'t authenticate your identity.'));
}
}
}
catch(Exception $e)
{
if (isset($service) && $service->isConnected())
$service->disconnect();
$error = 'Sorry! We couldn\'t authenticate you.';
$this->session->set_flashdata('showmsg', array('msg' => $error));
$error .= '\nError Code: ' . $e->getCode();
$error .= '\nError Message: ' . $e->getMessage();
log_message('error', $error);
}
//redirect();
}
}