/** * @return $this */ private function makeClientAuth() { if (!$this->isAuthMode()) { return $this; } $this->client->setRedirectUri('postmessage'); $this->client->authenticate($this->code); $this->client->setAccessType('offline'); return $this; }
public function login() { if ($this->session->email) { //redirect(/*"accueil"*/); } else { $this->load->library('google'); if (!($code = $this->input->get('code'))) { // première étape : redirige vers la page de connexion $json_credentials = 'assets/connexion_google/client_secret_22946272988-a3e2srpeacg8apvl36g5ii09sh4uea89.apps.googleusercontent.com.json'; $client = new Google_client(); $client = new Google_Client(); $client->setAuthConfigFile($json_credentials); // $redirect="https://bastv.olympe.in/pweb2016/connexion_gplus.php"; // $client->setRedirectUri($redirect); $client->setRedirectUri('http://localhost/index.php/connexion/login/'); $client->addScope("profile"); $client->addScope("email"); $url_auth = $client->createAuthUrl(); redirect($url_auth); } else { // deuxième étape : réceptionne le code d'"authorization" et récupère l'email (ou d'autres données) de l'utilisateur try { $json_credentials = 'assets/connexion_google/client_secret_22946272988-a3e2srpeacg8apvl36g5ii09sh4uea89.apps.googleusercontent.com.json'; $client = new Google_client(); $client->setAuthConfigFile($json_credentials); $client->setRedirectUri('http://localhost/index.php/connexion/login/'); $client->addScope("profile"); $client->addScope("email"); /*try{*/ $client->authenticate($code); // nécessite que https soit activé sur wamp /*}*/ /* catch(Exception $e) { // si serveur local https n'est peut-être pas activé sur le serveur si local $msg_erreur="Échec de l'authentification. Détails :"; $erreur=$e; //$this->load->view('template',array('content'=>'connexion','msg_erreur'=>"Échec de l'authentification. Détails :",'e'=>$e)); //$this->load->view('template',array("content"=>"connexion")); }*/ $acces_token = $client->getAccessToken(); /*try{*/ $oauth2 = new Google_Service_Oauth2($client); $infos = $oauth2->userinfo->get(); /*}*/ /* catch(Exception $e){ $msg_erreur="Erreur lors de la récupération des données auprès de Google."; $erreur=$e; }*/ $domaine = explode('@', $infos->email)[1]; if (strcasecmp($domaine, 'ifosupwavre.be') != 0) { // vérifie que l'adresse est en @ifosupwavre.be ; par la suite, configurer le domaine chez google pour qu'il n'accepte que les logins de ce domain throw new Exception("L'adresse " . $infos->email . " n'est pas une adresse @ifosupwavre.be. Déconnectez-vous de google et réessayez."); } else { $req = $this->db->get_where('utilisateurs', array('LoginGoogle' => $infos->email), 1)->result(); // utiliser le modèle if (!$req) { throw new exception("Utilisateur inconnu."); } else { // ici, récupérer le role dans la bdd ! $this->session->set_userdata(array('nom' => $infos->name, 'email' => $infos->email, 'google_id' => $infos->id, 'picture' => $infos->picture, 'role' => '(pas encore spécifié)')); redirect(); } } } catch (Exception $e) { $this->load->view('template', array('content' => 'connexion', 'erreur' => $e)); } } // fin traitement du code d'authorization } }