diff --git a/php/AuthSCHClient.class.php b/php/AuthSCHClient.class.php index a664507d30bd50c019b0ee18b7b497595ca6e1b9..8c86bd07ca5a982a067143d4cf4f807e214f2800 100644 --- a/php/AuthSCHClient.class.php +++ b/php/AuthSCHClient.class.php @@ -6,8 +6,7 @@ class AuthSCHClient { private static $username = ""; // your application's id private static $password = ""; // your application's password private static $scope = ""; // wanted data, separated with plus sign. For more information see your website profile on auth.sch.bme.hu. - - private $curl = null; // curl session + private $tokens; public function __construct($checkLogin = true) { @@ -33,19 +32,22 @@ class AuthSCHClient { } - private function curlSetOpt($urlPart, $data) { - curl_setopt($this->curl, CURLOPT_URL, self::$host . $urlPart); - curl_setopt($this->curl, CURLOPT_HEADER, 0); - curl_setopt($this->curl, CURLOPT_USERPWD, self::$username . ":" . self::$password); - curl_setopt($this->curl, CURLOPT_TIMEOUT, 30); - curl_setopt($this->curl, CURLOPT_POST, 1); - curl_setopt($this->curl, CURLOPT_POSTFIELDS, http_build_query($data)); - curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, TRUE); + private function curlExec($urlPart, $data) { + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, self::$host . $urlPart); + curl_setopt($ch, CURLOPT_HEADER, 0); + if($urlPart != "oauth2/resource") + curl_setopt($curl, CURLOPT_USERPWD, self::$username . ":" . self::$password); + curl_setopt($ch, CURLOPT_TIMEOUT, 30); + curl_setopt($ch, CURLOPT_POST, 1); + curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); + $ret = curl_exec($ch); + curl_close($ch); + return $ret; } private function authenticate() { - $this->curl = curl_init(); - // before authentication & authorization if (!isset($_GET['code'])) { // get token @@ -53,33 +55,33 @@ class AuthSCHClient { 'grant_type' => 'client_credentials', ); - $this->curlSetOpt("oauth2/token", $data); + $ch = $this->curlExec("oauth2/token", $data); $data = array( - 'access_token' => json_decode(curl_exec($this->curl))->access_token, + 'access_token' => json_decode($ch)->access_token, ); - $this->curlSetOpt("oauth2/resource", $data); + $ch = $this->curlExec("oauth2/resource", $data); // check api access & redirect to auth.sch.bme.hu for authorization - if (json_decode(curl_exec($this->curl))->success == true) - header("Location: " . $host . "site/login?response_type=code&client_id&". self::$username ."&state=" . sha1($_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']) . "&scope=" . self::$scope); + if ($res != null && isset($res->success) && $res->success == true) + header("Location: " . self::$host . "site/login?response_type=code&client_id&". self::$username ."&state=" . sha1($_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']) . "&scope=" . self::$scope); + else + throw new Exception("error during api check"); } else { $data = array( 'grant_type'=>'authorization_code', 'code'=>$_GET['code'], ); - $this->curlSetOpt("oauth2/token", $data); - $tokens = json_decode(curl_exec($this->curl)); + $ch = $this->curlExec("oauth2/token", $data); + $tokens = json_decode($ch); if($tokens === null || !isset($tokens->access_token) || empty($tokens->access_token)) throw new Exception ("invalid token data"); $this->tokens = $tokens; } - - curl_close($this->curl); } -} +} \ No newline at end of file