]> git.mxchange.org Git - friendica.git/blobdiff - src/Network/FKOAuthDataStore.php
Merge pull request #8036 from nupplaphil/task/redundant_system_call
[friendica.git] / src / Network / FKOAuthDataStore.php
index 6422afcf9cd22dd83f0ad020c0ed14b82f3413aa..e7a71b214e2520d966cc9b575d5feb2edb56aa1a 100644 (file)
@@ -10,8 +10,9 @@
 namespace Friendica\Network;
 
 use Friendica\Core\Config;
+use Friendica\Core\Logger;
 use Friendica\Database\DBA;
-use Friendica\Database\DBM;
+use Friendica\Util\Strings;
 use OAuthConsumer;
 use OAuthDataStore;
 use OAuthToken;
@@ -19,8 +20,6 @@ use OAuthToken;
 define('REQUEST_TOKEN_DURATION', 300);
 define('ACCESS_TOKEN_DURATION', 31536000);
 
-require_once 'include/dba.php';
-
 /**
  * @brief OAuthDataStore class
  */
@@ -28,24 +27,26 @@ 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::inArray($s);
+               $r = DBA::toArray($s);
 
-               if (DBM::is_result($r)) {
+               if (DBA::isResult($r)) {
                        return new OAuthConsumer($r[0]['client_id'], $r[0]['pw'], $r[0]['redirect_uri']);
                }
 
@@ -53,19 +54,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]);
-               $r = DBA::inArray($s);
+               $s = DBA::select('tokens', ['id', 'secret', 'scope', 'expires', 'uid'], ['client_id' => $consumer->key, 'scope' => $token_type, 'id' => $token_id]);
+               $r = DBA::toArray($s);
 
-               if (DBM::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'];
@@ -77,16 +79,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 (DBM::is_result($token)) {
+               if (DBA::isResult($token)) {
                        return new OAuthToken($token['id'], $token['secret']);
                }
 
@@ -94,13 +97,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();
 
@@ -117,7 +121,8 @@ class FKOAuthDataStore extends OAuthDataStore
                                'secret' => $sec,
                                'client_id' => $k,
                                'scope' => 'request',
-                               'expires' => time() + REQUEST_TOKEN_DURATION]
+                               'expires' => time() + REQUEST_TOKEN_DURATION
+                       ]
                );
 
                if (!$r) {
@@ -128,14 +133,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
@@ -146,7 +152,7 @@ class FKOAuthDataStore extends OAuthDataStore
 
                // get user for this verifier
                $uverifier = Config::get("oauth", $verifier);
-               logger(__function__ . ":" . $verifier . "," . $uverifier);
+               Logger::log(__function__ . ":" . $verifier . "," . $uverifier);
 
                if (is_null($verifier) || ($uverifier !== false)) {
                        $key = self::genToken();
@@ -159,7 +165,8 @@ class FKOAuthDataStore extends OAuthDataStore
                                        'client_id' => $consumer->key,
                                        'scope' => 'access',
                                        'expires' => time() + ACCESS_TOKEN_DURATION,
-                                       'uid' => $uverifier]
+                                       'uid' => $uverifier
+                               ]
                        );
 
                        if ($r) {