Пример #1
0
 /**
  * @return $this
  */
 private function makeClientRefresh()
 {
     if (!$this->isRefreshMode()) {
         return $this;
     }
     $this->client->refreshToken($this->code);
     $this->client->verifyIdToken();
     return $this;
 }
Пример #2
0
 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
     }
 }