| <?php␊ |
| ␊ |
| namespace system\vendor\phpoauthlib2;␊ |
| ␊ |
| require "ccurl.php";␊ |
| ␊ |
| use phpoauthlib2\ccurl;␊ |
| ␊ |
| class OAUTH_SCOPES {␊ |
| const EMAIL = "EMAIL";␊ |
| }␊ |
| ␊ |
| class OAuthDataProvider {␊ |
| protected $version = "2.0";␊ |
| protected $name = "undefined";␊ |
| protected $responseType = "code";␊ |
| protected $header = "Authorization: Bearer";␊ |
| protected $profile = "";␊ |
| protected $dialog = "";␊ |
| protected $nonce = null;␊ |
| protected $accessToken = null;␊ |
| ␊ |
| protected $state = "";␊ |
| protected $redirectURL = "";␊ |
| protected $scope = "";␊ |
| protected $clientId = "";␊ |
| protected $client_secret = "";␊ |
| ␊ |
| protected $request = null;␊ |
| protected $profileData = [];␊ |
| ␊ |
| public function __construct($profile, $dialog, $accessToken, $request, $header="Authorization: Bearer") {␊ |
| $this->profile = $profile;␊ |
| $this->dialog = $dialog;␊ |
| $this->accessToken = $accessToken;␊ |
| $this->header = $header;␊ |
| $this->request = $request;␊ |
| }␊ |
| ␊ |
| public function getLoginUrl() {␊ |
| $urlBuilder = [];␊ |
| $urlBuilder[] = "client_id=" . $this->clientId;␊ |
| $urlBuilder[] = "response_type=" . $this->responseType;␊ |
| $urlBuilder[] = "scope=" . $this->scope;␊ |
| $urlBuilder[] = "state=" . $this->state;␊ |
| $urlBuilder[] = "redirect_uri=" . urlencode($this->redirectURL);␊ |
| return $this->dialog . "?" . implode("&", $urlBuilder);␊ |
| }␊ |
| ␊ |
| protected function getToken() {␊ |
| $tokenBuilder = [];␊ |
| $tokenBuilder["client_id"] = $this->clientId;␊ |
| $tokenBuilder["client_secret"] = $this->client_secret;␊ |
| $tokenBuilder["grant_type"] = "authorization_code";␊ |
| $tokenBuilder["redirect_uri"] = htmlspecialchars($this->redirectURL);␊ |
| $tokenBuilder["code"] = $this->request["code"];␊ |
| $curl = new ccurl($this->accessToken);␊ |
| $curl->setPost($tokenBuilder);␊ |
| $curl->createCurl();␊ |
| return (string)$curl;␊ |
| }␊ |
| ␊ |
| protected function parseToken() {␊ |
| $token = $this->getToken();␊ |
| $convertedToken = json_decode($token, true);␊ |
| if (!$convertedToken) {␊ |
| $realToken = $token;␊ |
| } else {␊ |
| $realToken = $convertedToken["access_token"];␊ |
| }␊ |
| ␊ |
| return $realToken;␊ |
| }␊ |
| ␊ |
| public function getProfile() {␊ |
| $token = $this->parseToken();␊ |
| ␊ |
| $profileUrl = $this->profile . "=" . $token;␊ |
| $curl = new ccurl($profileUrl);␊ |
| $curl->addHeader($this->header . " " . $token);␊ |
| $curl->createCurl();␊ |
| $this->profileData = json_decode((string)$curl, true);␊ |
| return (string)$curl;␊ |
| }␊ |
| ␊ |
| public function getEmail() {␊ |
| return null;␊ |
| }␊ |
| ␊ |
| public function getFirstName() {␊ |
| return null;␊ |
| }␊ |
| ␊ |
| public function getLastName() {␊ |
| return null;␊ |
| }␊ |
| ␊ |
| public function getGender() {␊ |
| return null;␊ |
| }␊ |
| ␊ |
| public function getId() {␊ |
| return null;␊ |
| }␊ |
| ␊ |
| public function getRawProfile() {␊ |
| return $this->profileData;␊ |
| }␊ |
| ␊ |
| public function getSource() {␊ |
| return null;␊ |
| }␊ |
| } |