X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FNetwork%2FFKOAuthDataStore.php;h=ee9a70915270e3d3e2aa6be0790384133a9e7533;hb=2c56d2f3360c08e312e5c167261af8e5d4b87af4;hp=b3409fe0c1ad2107fbe908b80d0d2cdf5c345794;hpb=0ec44f3e8a73229c3aadea86f61b5571a701c6b7;p=friendica.git diff --git a/src/Network/FKOAuthDataStore.php b/src/Network/FKOAuthDataStore.php index b3409fe0c1..ee9a709152 100644 --- a/src/Network/FKOAuthDataStore.php +++ b/src/Network/FKOAuthDataStore.php @@ -1,16 +1,30 @@ + * @copyright Copyright (C) 2020, Friendica + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . * */ namespace Friendica\Network; -use Friendica\Core\Config; +use Friendica\Core\Logger; use Friendica\Database\DBA; +use Friendica\DI; +use Friendica\Util\Strings; use OAuthConsumer; use OAuthDataStore; use OAuthToken; @@ -18,33 +32,33 @@ use OAuthToken; define('REQUEST_TOKEN_DURATION', 300); define('ACCESS_TOKEN_DURATION', 31536000); -require_once 'include/dba.php'; - /** - * @brief OAuthDataStore class + * OAuthDataStore class */ class FKOAuthDataStore extends OAuthDataStore { /** * @return string + * @throws \Exception */ private static function genToken() { - return md5(base64_encode(pack('N6', mt_rand(), mt_rand(), mt_rand(), mt_rand(), mt_rand(), uniqid()))); + return Strings::getRandomHex(32); } /** * @param string $consumer_key key - * @return mixed + * @return OAuthConsumer|null + * @throws \Exception */ public function lookup_consumer($consumer_key) { - logger(__function__ . ":" . $consumer_key); + Logger::log(__function__ . ":" . $consumer_key); $s = DBA::select('clients', ['client_id', 'pw', 'redirect_uri'], ['client_id' => $consumer_key]); $r = DBA::toArray($s); - if (DBA::is_result($r)) { + if (DBA::isResult($r)) { return new OAuthConsumer($r[0]['client_id'], $r[0]['pw'], $r[0]['redirect_uri']); } @@ -52,19 +66,20 @@ class FKOAuthDataStore extends OAuthDataStore } /** - * @param string $consumer consumer - * @param string $token_type type - * @param string $token token - * @return mixed + * @param OAuthConsumer $consumer + * @param string $token_type + * @param string $token_id + * @return OAuthToken|null + * @throws \Exception */ - public function lookup_token($consumer, $token_type, $token) + public function lookup_token(OAuthConsumer $consumer, $token_type, $token_id) { - logger(__function__ . ":" . $consumer . ", " . $token_type . ", " . $token); + Logger::log(__function__ . ":" . $consumer . ", " . $token_type . ", " . $token_id); - $s = DBA::select('tokens', ['id', 'secret', 'scope', 'expires', 'uid'], ['client_id' => $consumer->key, 'scope' => $token_type, 'id' => $token]); + $s = DBA::select('tokens', ['id', 'secret', 'scope', 'expires', 'uid'], ['client_id' => $consumer->key, 'scope' => $token_type, 'id' => $token_id]); $r = DBA::toArray($s); - if (DBA::is_result($r)) { + if (DBA::isResult($r)) { $ot = new OAuthToken($r[0]['id'], $r[0]['secret']); $ot->scope = $r[0]['scope']; $ot->expires = $r[0]['expires']; @@ -76,16 +91,17 @@ class FKOAuthDataStore extends OAuthDataStore } /** - * @param string $consumer consumer - * @param string $token token - * @param string $nonce nonce - * @param string $timestamp timestamp + * @param OAuthConsumer $consumer + * @param OAuthToken $token + * @param string $nonce + * @param int $timestamp * @return mixed + * @throws \Exception */ - public function lookup_nonce($consumer, $token, $nonce, $timestamp) + public function lookup_nonce(OAuthConsumer $consumer, OAuthToken $token, $nonce, int $timestamp) { $token = DBA::selectFirst('tokens', ['id', 'secret'], ['client_id' => $consumer->key, 'id' => $nonce, 'expires' => $timestamp]); - if (DBA::is_result($token)) { + if (DBA::isResult($token)) { return new OAuthToken($token['id'], $token['secret']); } @@ -93,13 +109,14 @@ class FKOAuthDataStore extends OAuthDataStore } /** - * @param string $consumer consumer - * @param string $callback optional, default null - * @return mixed + * @param OAuthConsumer $consumer + * @param string $callback + * @return OAuthToken|null + * @throws \Exception */ - public function new_request_token($consumer, $callback = null) + public function new_request_token(OAuthConsumer $consumer, $callback = null) { - logger(__function__ . ":" . $consumer . ", " . $callback); + Logger::log(__function__ . ":" . $consumer . ", " . $callback); $key = self::genToken(); $sec = self::genToken(); @@ -116,7 +133,8 @@ class FKOAuthDataStore extends OAuthDataStore 'secret' => $sec, 'client_id' => $k, 'scope' => 'request', - 'expires' => time() + REQUEST_TOKEN_DURATION] + 'expires' => time() + REQUEST_TOKEN_DURATION + ] ); if (!$r) { @@ -127,14 +145,15 @@ class FKOAuthDataStore extends OAuthDataStore } /** - * @param string $token token - * @param string $consumer consumer - * @param string $verifier optional, defult null - * @return object + * @param OAuthToken $token token + * @param OAuthConsumer $consumer consumer + * @param string $verifier optional, defult null + * @return OAuthToken + * @throws \Exception */ - public function new_access_token($token, $consumer, $verifier = null) + public function new_access_token(OAuthToken $token, OAuthConsumer $consumer, $verifier = null) { - logger(__function__ . ":" . $token . ", " . $consumer . ", " . $verifier); + Logger::log(__function__ . ":" . $token . ", " . $consumer . ", " . $verifier); // return a new access token attached to this consumer // for the user associated with this token if the request token @@ -144,8 +163,8 @@ class FKOAuthDataStore extends OAuthDataStore $ret = null; // get user for this verifier - $uverifier = Config::get("oauth", $verifier); - logger(__function__ . ":" . $verifier . "," . $uverifier); + $uverifier = DI::config()->get("oauth", $verifier); + Logger::log(__function__ . ":" . $verifier . "," . $uverifier); if (is_null($verifier) || ($uverifier !== false)) { $key = self::genToken(); @@ -158,7 +177,8 @@ class FKOAuthDataStore extends OAuthDataStore 'client_id' => $consumer->key, 'scope' => 'access', 'expires' => time() + ACCESS_TOKEN_DURATION, - 'uid' => $uverifier] + 'uid' => $uverifier + ] ); if ($r) { @@ -169,7 +189,7 @@ class FKOAuthDataStore extends OAuthDataStore DBA::delete('tokens', ['id' => $token->key]); if (!is_null($ret) && !is_null($uverifier)) { - Config::delete("oauth", $verifier); + DI::config()->delete("oauth", $verifier); } return $ret;