2 /************************************************************************/
\r
4 /************************************************************************/
\r
5 /* Copyright (c) 2010 */
\r
6 /* Inclusive Design Institute */
\r
8 /* This program is free software. You can redistribute it and/or */
\r
9 /* modify it under the terms of the GNU General Public License */
\r
10 /* as published by the Free Software Foundation. */
\r
11 /************************************************************************/
\r
13 if (!defined('TR_INCLUDE_PATH')) exit;
\r
15 require_once(TR_INCLUDE_PATH."../oauth/lib/OAuth.php");
\r
16 require_once(TR_INCLUDE_PATH.'classes/DAO/OAuthServerConsumersDAO.class.php');
\r
17 require_once(TR_INCLUDE_PATH.'classes/DAO/OAuthServerTokensDAO.class.php');
\r
18 require_once(TR_INCLUDE_PATH.'classes/Utility.class.php');
\r
20 class MyOAuthServer extends OAuthServer {
\r
21 public function get_signature_methods() {
\r
22 return $this->signature_methods;
\r
26 class MyOAuthSignatureMethod_RSA_SHA1 extends OAuthSignatureMethod_RSA_SHA1 {
\r
27 public function fetch_private_cert(&$request) {
\r
29 -----BEGIN PRIVATE KEY-----
\r
30 MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALRiMLAh9iimur8V
\r
31 A7qVvdqxevEuUkW4K+2KdMXmnQbG9Aa7k7eBjK1S+0LYmVjPKlJGNXHDGuy5Fw/d
\r
32 7rjVJ0BLB+ubPK8iA/Tw3hLQgXMRRGRXXCn8ikfuQfjUS1uZSatdLB81mydBETlJ
\r
33 hI6GH4twrbDJCR2Bwy/XWXgqgGRzAgMBAAECgYBYWVtleUzavkbrPjy0T5FMou8H
\r
34 X9u2AC2ry8vD/l7cqedtwMPp9k7TubgNFo+NGvKsl2ynyprOZR1xjQ7WgrgVB+mm
\r
35 uScOM/5HVceFuGRDhYTCObE+y1kxRloNYXnx3ei1zbeYLPCHdhxRYW7T0qcynNmw
\r
36 rn05/KO2RLjgQNalsQJBANeA3Q4Nugqy4QBUCEC09SqylT2K9FrrItqL2QKc9v0Z
\r
37 zO2uwllCbg0dwpVuYPYXYvikNHHg+aCWF+VXsb9rpPsCQQDWR9TT4ORdzoj+Nccn
\r
38 qkMsDmzt0EfNaAOwHOmVJ2RVBspPcxt5iN4HI7HNeG6U5YsFBb+/GZbgfBT3kpNG
\r
39 WPTpAkBI+gFhjfJvRw38n3g/+UeAkwMI2TJQS4n8+hid0uus3/zOjDySH3XHCUno
\r
40 cn1xOJAyZODBo47E+67R4jV1/gzbAkEAklJaspRPXP877NssM5nAZMU0/O/NGCZ+
\r
41 3jPgDUno6WbJn5cqm8MqWhW1xGkImgRk+fkDBquiq4gPiT898jusgQJAd5Zrr6Q8
\r
42 AO/0isr/3aa6O6NLQxISLKcPDk2NOccAfS/xOtfOz4sJYM3+Bs4Io9+dZGSDCA54
\r
44 -----END PRIVATE KEY-----
\r
49 public function fetch_public_cert(&$request) {
\r
51 -----BEGIN CERTIFICATE-----
\r
52 MIIBpjCCAQ+gAwIBAgIBATANBgkqhkiG9w0BAQUFADAZMRcwFQYDVQQDDA5UZXN0
\r
53 IFByaW5jaXBhbDAeFw03MDAxMDEwODAwMDBaFw0zODEyMzEwODAwMDBaMBkxFzAV
\r
54 BgNVBAMMDlRlc3QgUHJpbmNpcGFsMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
\r
55 gQC0YjCwIfYoprq/FQO6lb3asXrxLlJFuCvtinTF5p0GxvQGu5O3gYytUvtC2JlY
\r
56 zypSRjVxwxrsuRcP3e641SdASwfrmzyvIgP08N4S0IFzEURkV1wp/IpH7kH41Etb
\r
57 mUmrXSwfNZsnQRE5SYSOhh+LcK2wyQkdgcMv11l4KoBkcwIDAQABMA0GCSqGSIb3
\r
58 DQEBBQUAA4GBAGZLPEuJ5SiJ2ryq+CmEGOXfvlTtEL2nuGtr9PewxkgnOjZpUy+d
\r
59 4TvuXJbNQc8f4AMWL/tO9w0Fk80rWKp9ea8/df4qMq5qlFWlx6yOLQxumNOmECKb
\r
60 WpkUQDIDJEoFUzKMVuJf4KO/FJ345+BNLGgbJ6WujreoM1X/gYfdnJ/J
\r
61 -----END CERTIFICATE-----
\r
70 class MyOAuthDataStore extends OAuthDataStore {/*{{{*/
\r
71 private $oauthServerConsumersDAO;
\r
72 private $oauthServerTokensDAO;
\r
74 function __construct() {/*{{{*/
\r
75 $this->oauthServerConsumersDAO = new OAuthServerConsumersDAO();
\r
76 $this->oauthServerTokensDAO = new OAuthServerTokensDAO();
\r
79 function lookup_consumer($consumer_key) {/*{{{*/
\r
80 $consumer_row = $this->oauthServerConsumersDAO->getByConsumerKey($consumer_key);
\r
82 if (is_array($consumer_row))
\r
83 return new OAuthConsumer($consumer_key, $consumer_row[0]['consumer_secret'], NULL);
\r
88 function lookup_token($consumer, $token_type, $token) {/*{{{*/
\r
89 if ($token == '') return NULL;
\r
91 $token_row = $this->oauthServerTokensDAO->getByToken($consumer->key, $token);
\r
92 if ($token_row[0]['token_type'] == $token_type)
\r
93 return $token_row[0]['token'];
\r
98 function lookup_nonce($consumer, $token, $nonce, $timestamp) {/*{{{*/
\r
99 if ($nonce == '') return NULL;
\r
101 $row_token = $this->oauthServerTokensDAO->getByToken($consumer->key, $token);
\r
102 if ($row_token[0]['nonce'] == $nonce)
\r
108 function lookup_authenticate_request_token($token) {
\r
109 $token_row = $this->oauthServerTokensDAO->getByTokenAndType($token, 'request');
\r
110 if ($token_row[0]['user_id'] > 0) return true;
\r
114 function lookup_expire_threshold($consumer) {
\r
115 $consumer_row = $this->oauthServerConsumersDAO->getByConsumerKey($consumer->key);
\r
116 return $consumer_row[0]['expire_threshold'];
\r
119 function new_request_token($consumer) {/*{{{*/
\r
120 $token = Utility::getRandomStr(18);
\r
121 $token_secret = Utility::getRandomStr(18);
\r
123 // save token into db
\r
124 // Problem: need $user_id
\r
125 $consumer_row = $this->oauthServerConsumersDAO->getByConsumerKey($consumer->key);
\r
127 $this->oauthServerTokensDAO->Create($consumer_row[0]['consumer_id'], $token, 'request',
\r
129 $request_token = new OAuthToken($token, $token_secret);
\r
131 return $request_token;
\r
134 function new_access_token($token, $consumer) {/*{{{*/
\r
135 $access_token_key = Utility::getRandomStr(18);
\r
136 $access_token_secret = Utility::getRandomStr(18);
\r
138 $request_token_row = $this->oauthServerTokensDAO->getByTokenAndType($token, 'request');
\r
140 $this->oauthServerTokensDAO->Create($request_token_row[0]['consumer_id'], $access_token_key, 'access',
\r
141 $access_token_secret, $request_token_row[0]['user_id']);
\r
142 $this->oauthServerTokensDAO->deleteByTokenAndType($token, 'request');
\r
144 $access_token = new OAuthToken($access_token_key, $access_token_secret);
\r
146 return $access_token;
\r