moved code up one level to eliminate the docs subdirectory
[acontent.git] / oauth / classes / MyOAuthServer.class.php
1 <?php\r
2 /************************************************************************/\r
3 /* AContent                                                             */\r
4 /************************************************************************/\r
5 /* Copyright (c) 2010                                                   */\r
6 /* Inclusive Design Institute                                           */\r
7 /*                                                                      */\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
12 \r
13 if (!defined('TR_INCLUDE_PATH')) exit;\r
14 \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
19 \r
20 class MyOAuthServer extends OAuthServer {\r
21   public function get_signature_methods() {\r
22     return $this->signature_methods;\r
23   }\r
24 }\r
25 \r
26 class MyOAuthSignatureMethod_RSA_SHA1 extends OAuthSignatureMethod_RSA_SHA1 {\r
27   public function fetch_private_cert(&$request) {\r
28     $cert = <<<EOD\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
43 Lw03eHTNQghS0A==\r
44 -----END PRIVATE KEY-----\r
45 EOD;\r
46     return $cert;\r
47   }\r
48 \r
49   public function fetch_public_cert(&$request) {\r
50     $cert = <<<EOD\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
62 EOD;\r
63     return $cert;\r
64   }\r
65\r
66 \r
67 /**\r
68  * OAuth data store\r
69  */\r
70 class MyOAuthDataStore extends OAuthDataStore {/*{{{*/\r
71     private $oauthServerConsumersDAO;\r
72     private $oauthServerTokensDAO;\r
73     \r
74     function __construct() {/*{{{*/\r
75         $this->oauthServerConsumersDAO = new OAuthServerConsumersDAO();\r
76         $this->oauthServerTokensDAO = new OAuthServerTokensDAO();\r
77     }\r
78 \r
79     function lookup_consumer($consumer_key) {/*{{{*/\r
80         $consumer_row = $this->oauthServerConsumersDAO->getByConsumerKey($consumer_key);\r
81         \r
82         if (is_array($consumer_row)) \r
83                 return new OAuthConsumer($consumer_key, $consumer_row[0]['consumer_secret'], NULL);\r
84         else\r
85                 return NULL;\r
86     }\r
87 \r
88     function lookup_token($consumer, $token_type, $token) {/*{{{*/\r
89         if ($token == '') return NULL;\r
90         \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
94         else \r
95                 return NULL;\r
96     }\r
97 \r
98     function lookup_nonce($consumer, $token, $nonce, $timestamp) {/*{{{*/\r
99         if ($nonce == '') return NULL;\r
100         \r
101         $row_token = $this->oauthServerTokensDAO->getByToken($consumer->key, $token);\r
102         if ($row_token[0]['nonce'] == $nonce) \r
103                 return $nonce;\r
104         else \r
105                 return NULL;\r
106     }/*}}}*/\r
107 \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
111         else return false;\r
112     }\r
113     \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
117     }\r
118     \r
119     function new_request_token($consumer) {/*{{{*/\r
120         $token = Utility::getRandomStr(18);\r
121         $token_secret = Utility::getRandomStr(18);\r
122         \r
123         // save token into db\r
124         // Problem: need $user_id\r
125         $consumer_row = $this->oauthServerConsumersDAO->getByConsumerKey($consumer->key);\r
126         \r
127         $this->oauthServerTokensDAO->Create($consumer_row[0]['consumer_id'], $token, 'request',\r
128              $token_secret, 0);\r
129         $request_token = new OAuthToken($token, $token_secret);\r
130         \r
131         return $request_token;\r
132     }/*}}}*/\r
133 \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
137             \r
138         $request_token_row = $this->oauthServerTokensDAO->getByTokenAndType($token, 'request');\r
139         \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
143         \r
144                 $access_token = new OAuthToken($access_token_key, $access_token_secret);\r
145         \r
146                 return $access_token;\r
147     }/*}}}*/\r
148 }/*}}}*/\r
149 \r
150 ?>