summaryrefslogtreecommitdiff
path: root/classes
diff options
context:
space:
mode:
authorZach Copley <zach@status.net>2010-10-19 20:54:53 -0700
committerZach Copley <zach@status.net>2010-10-19 20:54:53 -0700
commite8b6d7c946da5fb2ce5397bccfd332de8ca1f9dd (patch)
tree3deb74da4e590c4f5756caed1fa1299a2b1bd2f0 /classes
parentd48f4a81d6af7a9a326ffc2e87d7de568ab48fbe (diff)
Add support for an anonymous OAuth consumer. Note: this requires a
small DB tweak. Oauth_application_user needs to have the primary compound key: (profile_id, application_id, token). http://status.net/open-source/issues/2761 This should also make it possible to have multiple access tokens per application. http://status.net/open-source/issues/2788
Diffstat (limited to 'classes')
-rw-r--r--classes/Oauth_application_user.php41
-rw-r--r--classes/Profile.php10
-rw-r--r--classes/statusnet.ini3
3 files changed, 43 insertions, 11 deletions
diff --git a/classes/Oauth_application_user.php b/classes/Oauth_application_user.php
index 3d4238d64..fcf6553ff 100644
--- a/classes/Oauth_application_user.php
+++ b/classes/Oauth_application_user.php
@@ -13,7 +13,7 @@ class Oauth_application_user extends Memcached_DataObject
public $profile_id; // int(4) primary_key not_null
public $application_id; // int(4) primary_key not_null
public $access_type; // tinyint(1)
- public $token; // varchar(255)
+ public $token; // varchar(255) primary_key not_null
public $created; // datetime not_null
public $modified; // timestamp not_null default_CURRENT_TIMESTAMP
@@ -24,20 +24,51 @@ class Oauth_application_user extends Memcached_DataObject
/* the code above is auto generated do not remove the tag below */
###END_AUTOCODE
- static function getByKeys($user, $app)
+ static function getByUserAndToken($user, $token)
{
- if (empty($user) || empty($app)) {
+ if (empty($user) || empty($token)) {
return null;
}
$oau = new Oauth_application_user();
- $oau->profile_id = $user->id;
- $oau->application_id = $app->id;
+ $oau->profile_id = $user->id;
+ $oau->token = $token;
$oau->limit(1);
$result = $oau->find(true);
return empty($result) ? null : $oau;
}
+
+ function updateKeys(&$orig)
+ {
+ $this->_connect();
+ $parts = array();
+ foreach (array('profile_id', 'application_id', 'token', 'access_type') as $k) {
+ if (strcmp($this->$k, $orig->$k) != 0) {
+ $parts[] = $k . ' = ' . $this->_quote($this->$k);
+ }
+ }
+ if (count($parts) == 0) {
+ # No changes
+ return true;
+ }
+ $toupdate = implode(', ', $parts);
+
+ $table = $this->tableName();
+ if(common_config('db','quote_identifiers')) {
+ $table = '"' . $table . '"';
+ }
+ $qry = 'UPDATE ' . $table . ' SET ' . $toupdate .
+ ' WHERE profile_id = ' . $orig->profile_id
+ . ' AND application_id = ' . $orig->application_id
+ . " AND token = '$orig->token'";
+ $orig->decache();
+ $result = $this->query($qry);
+ if ($result) {
+ $this->encache();
+ }
+ return $result;
+ }
}
diff --git a/classes/Profile.php b/classes/Profile.php
index 12ce5d9b6..a32051d07 100644
--- a/classes/Profile.php
+++ b/classes/Profile.php
@@ -401,10 +401,10 @@ class Profile extends Memcached_DataObject
return $profile;
}
- function getApplications($offset = 0, $limit = null)
+ function getConnectedApps($offset = 0, $limit = null)
{
$qry =
- 'SELECT a.* ' .
+ 'SELECT u.* ' .
'FROM oauth_application_user u, oauth_application a ' .
'WHERE u.profile_id = %d ' .
'AND a.id = u.application_id ' .
@@ -419,11 +419,11 @@ class Profile extends Memcached_DataObject
}
}
- $application = new Oauth_application();
+ $apps = new Oauth_application_user();
- $cnt = $application->query(sprintf($qry, $this->id));
+ $cnt = $apps->query(sprintf($qry, $this->id));
- return $application;
+ return $apps;
}
function subscriptionCount()
diff --git a/classes/statusnet.ini b/classes/statusnet.ini
index 3fb8ee208..7aa115fec 100644
--- a/classes/statusnet.ini
+++ b/classes/statusnet.ini
@@ -393,13 +393,14 @@ name = U
profile_id = 129
application_id = 129
access_type = 17
-token = 2
+token = 130
created = 142
modified = 384
[oauth_application_user__keys]
profile_id = K
application_id = K
+token = K
[profile]
id = 129