summaryrefslogtreecommitdiff
path: root/actions/userauthorization.php
blob: aaa161b68aa827924fa6f55ce8e6fdc190d04e51 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?php
/*
 * Laconica - a distributed open-source microblogging tool
 * Copyright (C) 2008, Controlez-Vous, 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
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

if (!defined('LACONICA')) { exit(1); }

require_once(INSTALLDIR.'/lib/omb.php');

class UserauthorizationAction extends Action {
	function handle($args) {
		parent::handle($args);
		
		if ($_SERVER['REQUEST_METHOD'] == 'POST') {
			$this->send_authorization();
		} else {
			try {
				common_debug('userauthorization.php - fetching request');
				$req = $this->get_request();
				if (!$req) {
					common_server_error(_t('Cannot find request'));
				}
				common_debug('userauthorization.php - $req = "'.print_r($req,TRUE).'"');
				$server = omb_oauth_server();
				common_debug('userauthorization.php - getting the consumer');
				$consumer = $server->get_consumer($req);
				common_debug('userauthorization.php - $consumer = "'.print_r($consumer,TRUE).'"');
				$token = $server->get_token($req, $consumer, "request");
				common_debug('userauthorization.php - $token = "'.print_r($token,TRUE).'"');
				$server->check_signature($req, $consumer, $token);
			} catch (OAuthException $e) {
				$this->clear_request();
				common_server_error($e->getMessage());
				return;
			}
			
			if (common_logged_in()) {
				$this->show_form($req);
			} else {
				# Go log in, and then come back
				common_set_returnto(common_local_url('userauthorization'));
				common_redirect(common_local_url('login'));
			}
		}
	}
	
	function store_request($req) {
		common_ensure_session();
		$_SESSION['userauthorizationrequest'] = $req;
	}
	
	function get_request() {
		common_ensure_session();		
		$req = $_SESSION['userauthorizationrequest'];
		if (!$req) {
			# XXX: may have an uncaught exception
			$req = OAuthRequest::from_request();
			if ($req) {
				$this->store_request($req);
			}
		}
		return $req;
	}
	
	function show_form($req) {
		common_show_header(_t('Authorize subscription'));

		common_show_footer();
	}
	
	function send_authorization() {
		$req = $this->get_request();
		
		if (!$req) {
			common_user_error(_t('No authorization request!'));
			return;
		}
		
		if ($this->boolean('authorize')) {
			
		}
	}
}