public function auth($provider)
{
try
{
$this->load->library('HybridAuthLib');
if ($this->hybridauthlib->providerEnabled($provider))
{
$service = $this->hybridauthlib->authenticate($provider);
if ($service->isUserConnected())
{
$user_profile = $service->getUserProfile();
$email = $user_profile->emailVerified;
$identity = $user_profile->displayName;
$avatar = $user_profile->photoURL;
$nombre = $user_profile->firstName;
$apellido = $user_profile->lastName;
$genero = $user_profile->gender;
$lenguaje = $user_profile->language;
if($this->ion_auth->social_login($email,$identity)){
redirect('/', 'refresh');
}else{
$this->ion_auth->social_register($identity,$email,$avatar,$nombre,$apellido,$genero,$lenguaje);
$this->ion_auth->social_login($identity,$email);
redirect('/', 'refresh');
}
}
else // Cannot authenticate user
{
show_error('Cannot authenticate user');
}
}
else // This service is not enabled.
{
show_404($_SERVER['REQUEST_URI']);
}
}
catch(Exception $e)
{
$error = 'Unexpected error';
switch($e->getCode())
{
case 0 : $error = 'Unspecified error.'; break;
case 1 : $error = 'Hybriauth configuration error.'; break;
case 2 : $error = 'Provider not properly configured.'; break;
case 3 : $error = 'Unknown or disabled provider.'; break;
case 4 : $error = 'Missing provider application credentials.'; break;
case 5 : log_message('debug', 'controllers.HAuth.login: Authentification failed. The user has canceled the authentication or the provider refused the connection.');
//redirect();
if (isset($service))
{
log_message('debug', 'controllers.HAuth.login: logging out from service.');
$service->logout();
}
show_error('User has cancelled the authentication or the provider refused the connection.');
break;
case 6 : $error = 'User profile request failed. Most likely the user is not connected to the provider and he should to authenticate again.';
break;
case 7 : $error = 'User not connected to the provider.';
break;
}
if (isset($service))
{
$service->logout();
}
log_message('error', 'controllers.HAuth.login: '.$error);
show_error('Error authenticating user.');
}
}
public function endpoint()
{
log_message('debug', 'controllers.HAuth.endpoint called.');
log_message('info', 'controllers.HAuth.endpoint: $_REQUEST: '.print_r($_REQUEST, TRUE));
if ($_SERVER['REQUEST_METHOD'] === 'GET')
{
log_message('debug', 'controllers.HAuth.endpoint: the request method is GET, copying REQUEST array into GET array.');
$_GET = $_REQUEST;
}
log_message('debug', 'controllers.HAuth.endpoint: loading the original HybridAuth endpoint script.');
require_once APPPATH.'/third_party/hybridauth/index.php';
}