예제 #1
0
파일: Google.php 프로젝트: inespons/ethanol
 public function get_form()
 {
     $client_id = \Config::get('ethanol.google.client_id');
     $client_secret = \Config::get('ethanol.google.client_secret');
     $redirect_uri = urlencode(parent::get_login_controller_path('google'));
     $scope = 'https://www.googleapis.com/auth/userinfo.email';
     $login_url = "https://accounts.google.com/o/oauth2/auth\n?scope={$scope}\n&redirect_uri={$redirect_uri}\n&response_type=code\n&client_id={$client_id}";
     return \View::forge('ethanol/driver/google_login')->set('loginUrl', $login_url)->render();
 }
예제 #2
0
 /**
  * Logs a user in and makes sure there's an assocated Ethanol user as well
  */
 public function validate_user($userdata)
 {
     //User wants to log in so make sure there's an Ethanol user as well
     if ($userdata['state'] != Session::instance()->get_instance()->get('ethanol.driver.facebook.csrf')) {
         Logger::instance()->log_log_in_attempt(Model_Log_In_Attempt::$ATTEMPT_BAD_CRIDENTIALS, null);
         throw new LogInFailed(\Lang::get('ethanol.errors.loginInvalid'));
     }
     //Remove the csrf token now that it has been validated
     Session::instance()->get_instance()->set('ethanol.driver.facebook.csrf', '');
     $app_id = \Config::get('ethanol.facebook.app_id');
     $app_secret = \Config::get('ethanol.facebook.app_secret');
     $code = \Arr::get($userdata, 'code');
     $redirect_url = urlencode(parent::get_login_controller_path('facebook'));
     //Get an access token from FB
     $token_url = "https://graph.facebook.com/oauth/access_token?" . "client_id=" . $app_id . "&redirect_uri=" . $redirect_url . "&client_secret=" . $app_secret . "&code=" . $code;
     $params = parent::get_access_token($token_url, 'facebook');
     //Now we have an access token lets get the email and finally create/check
     //the ethanol user.
     $graph_url = "https://graph.facebook.com/me?access_token=" . $params['access_token'];
     $facebookUser = json_decode(file_get_contents($graph_url));
     $email = $facebookUser->email;
     //Got a user so log in now
     return parent::perform_login($email, 'facebook');
 }