]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/oauthstore.php
Merge commit 'dcostalis/econversation' into 0.8.x
[quix0rs-gnu-social.git] / lib / oauthstore.php
index aa705be30dbf6558ad6af696e411f284e9cb6bec..f224c6c2213ed3324ad49d3f87567abc4ef988fd 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /*
  * Laconica - a distributed open-source microblogging tool
- * Copyright (C) 2008, Controlez-Vous, Inc.
+ * Copyright (C) 2008, 2009, Control Yourself, Inc.
  *
  * 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
@@ -21,11 +21,13 @@ if (!defined('LACONICA')) { exit(1); }
 
 require_once(INSTALLDIR.'/lib/omb.php');
 
-class LaconicaOAuthDataStore extends OAuthDataStore {
+class LaconicaOAuthDataStore extends OAuthDataStore
+{
 
-    # We keep a record of who's contacted us
+    // We keep a record of who's contacted us
 
-    function lookup_consumer($consumer_key) {
+    function lookup_consumer($consumer_key)
+    {
         $con = Consumer::staticGet('consumer_key', $consumer_key);
         if (!$con) {
             $con = new Consumer();
@@ -33,13 +35,14 @@ class LaconicaOAuthDataStore extends OAuthDataStore {
             $con->seed = common_good_rand(16);
             $con->created = DB_DataObject_Cast::dateTime();
             if (!$con->insert()) {
-                return NULL;
+                return null;
             }
         }
         return new OAuthConsumer($con->consumer_key, '');
     }
 
-    function lookup_token($consumer, $token_type, $token_key) {
+    function lookup_token($consumer, $token_type, $token_key)
+    {
         $t = new Token();
         $t->consumer_key = $consumer->key;
         $t->tok = $token_key;
@@ -47,98 +50,108 @@ class LaconicaOAuthDataStore extends OAuthDataStore {
         if ($t->find(true)) {
             return new OAuthToken($t->tok, $t->secret);
         } else {
-            return NULL;
+            return null;
         }
     }
 
-    function lookup_nonce($consumer, $token, $nonce, $timestamp) {
+    // http://oauth.net/core/1.0/#nonce
+    // "The Consumer SHALL then generate a Nonce value that is unique for
+    // all requests with that timestamp."
+
+    // XXX: It's not clear why the token is here
+
+    function lookup_nonce($consumer, $token, $nonce, $timestamp)
+    {
         $n = new Nonce();
         $n->consumer_key = $consumer->key;
-        $n->tok = $token->key;
+        $n->ts = $timestamp;
         $n->nonce = $nonce;
-        if ($n->find(TRUE)) {
-            return TRUE;
+        if ($n->find(true)) {
+            return true;
         } else {
-            $n->timestamp = $timestamp;
             $n->created = DB_DataObject_Cast::dateTime();
             $n->insert();
-            return FALSE;
+            return false;
         }
     }
 
-    function new_request_token($consumer) {
+    function new_request_token($consumer)
+    {
         $t = new Token();
         $t->consumer_key = $consumer->key;
         $t->tok = common_good_rand(16);
         $t->secret = common_good_rand(16);
-        $t->type = 0; # request
-        $t->state = 0; # unauthorized
+        $t->type = 0; // request
+        $t->state = 0; // unauthorized
         $t->created = DB_DataObject_Cast::dateTime();
         if (!$t->insert()) {
-            return NULL;
+            return null;
         } else {
             return new OAuthToken($t->tok, $t->secret);
         }
     }
 
-    # defined in OAuthDataStore, but not implemented anywhere
+    // defined in OAuthDataStore, but not implemented anywhere
 
-    function fetch_request_token($consumer) {
+    function fetch_request_token($consumer)
+    {
         return $this->new_request_token($consumer);
     }
 
-    function new_access_token($token, $consumer) {
+    function new_access_token($token, $consumer)
+    {
         common_debug('new_access_token("'.$token->key.'","'.$consumer->key.'")', __FILE__);
         $rt = new Token();
         $rt->consumer_key = $consumer->key;
         $rt->tok = $token->key;
-        $rt->type = 0; # request
-        if ($rt->find(TRUE) && $rt->state == 1) { # authorized
+        $rt->type = 0; // request
+        if ($rt->find(true) && $rt->state == 1) { // authorized
             common_debug('request token found.', __FILE__);
             $at = new Token();
             $at->consumer_key = $consumer->key;
             $at->tok = common_good_rand(16);
             $at->secret = common_good_rand(16);
-            $at->type = 1; # access
+            $at->type = 1; // access
             $at->created = DB_DataObject_Cast::dateTime();
             if (!$at->insert()) {
                 $e = $at->_lastError;
                 common_debug('access token "'.$at->tok.'" not inserted: "'.$e->message.'"', __FILE__);
-                return NULL;
+                return null;
             } else {
                 common_debug('access token "'.$at->tok.'" inserted', __FILE__);
-                # burn the old one
+                // burn the old one
                 $orig_rt = clone($rt);
-                $rt->state = 2; # used
+                $rt->state = 2; // used
                 if (!$rt->update($orig_rt)) {
-                    return NULL;
+                    return null;
                 }
                 common_debug('request token "'.$rt->tok.'" updated', __FILE__);
-                # Update subscription
-                # XXX: mixing levels here
+                // Update subscription
+                // XXX: mixing levels here
                 $sub = Subscription::staticGet('token', $rt->tok);
                 if (!$sub) {
-                    return NULL;
+                    return null;
                 }
                 common_debug('subscription for request token found', __FILE__);
                 $orig_sub = clone($sub);
                 $sub->token = $at->tok;
                 $sub->secret = $at->secret;
                 if (!$sub->update($orig_sub)) {
-                    return NULL;
+                    return null;
                 } else {
                     common_debug('subscription updated to use access token', __FILE__);
                     return new OAuthToken($at->tok, $at->secret);
                 }
             }
         } else {
-            return NULL;
+            return null;
         }
     }
 
-    # defined in OAuthDataStore, but not implemented anywhere
+    // defined in OAuthDataStore, but not implemented anywhere
 
-    function fetch_access_token($consumer) {
+    function fetch_access_token($consumer)
+    {
         return $this->new_access_token($consumer);
     }
 }