| 
									
										
										
										
											2008-05-26 07:27:00 -04:00
										 |  |  | <?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); } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class UserauthorizationAction extends Action { | 
					
						
							|  |  |  | 	function handle($args) { | 
					
						
							|  |  |  | 		parent::handle($args); | 
					
						
							| 
									
										
										
										
											2008-05-27 07:42:19 -04:00
										 |  |  | 		 | 
					
						
							|  |  |  | 		if ($_SERVER['REQUEST_METHOD'] == 'POST') { | 
					
						
							|  |  |  | 			$this->send_authorization(); | 
					
						
							|  |  |  | 		} else { | 
					
						
							|  |  |  | 			try { | 
					
						
							|  |  |  | 				$req = $this->get_request(); | 
					
						
							|  |  |  | 				$server = common_oauth_server(); | 
					
						
							| 
									
										
										
										
											2008-05-30 10:23:24 -04:00
										 |  |  | 				$server->get_version($req); | 
					
						
							|  |  |  | 				$consumer = $server->get_consumer($req); | 
					
						
							|  |  |  | 				$token = $server->get_token($req, $consumer, "request"); | 
					
						
							|  |  |  | 				$server->check_signature($req, $consumer, $token); | 
					
						
							| 
									
										
										
										
											2008-05-27 07:42:19 -04:00
										 |  |  | 			} catch (OAuthException $e) { | 
					
						
							|  |  |  | 				$this->clear_request(); | 
					
						
							|  |  |  | 				common_server_error($e->getMessage()); | 
					
						
							|  |  |  | 				return; | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 			 | 
					
						
							|  |  |  | 			if (common_logged_in()) { | 
					
						
							|  |  |  | 				$this->show_form($req); | 
					
						
							|  |  |  | 			} else { | 
					
						
							| 
									
										
										
										
											2008-05-30 10:23:24 -04:00
										 |  |  | 				# Go log in, and then come back
 | 
					
						
							|  |  |  | 				common_set_returnto(common_local_url('userauthorization')); | 
					
						
							| 
									
										
										
										
											2008-05-27 07:42:19 -04:00
										 |  |  | 				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(); | 
					
						
							| 
									
										
										
										
											2008-05-30 10:23:24 -04:00
										 |  |  | 			if ($req) { | 
					
						
							|  |  |  | 				$this->store_request($req); | 
					
						
							|  |  |  | 			} | 
					
						
							| 
									
										
										
										
											2008-05-27 07:42:19 -04:00
										 |  |  | 		} | 
					
						
							|  |  |  | 		return $req; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 	function show_form($req) { | 
					
						
							|  |  |  | 		common_show_header(_t('Authorize subscription')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		common_show_footer(); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 	function send_authorization() { | 
					
						
							|  |  |  | 		$req = $this->get_request(); | 
					
						
							| 
									
										
										
										
											2008-05-30 10:23:24 -04:00
										 |  |  | 		 | 
					
						
							| 
									
										
										
										
											2008-05-27 07:42:19 -04:00
										 |  |  | 		if (!$req) { | 
					
						
							|  |  |  | 			common_user_error(_t('No authorization request!')); | 
					
						
							|  |  |  | 			return; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		 | 
					
						
							|  |  |  | 		if ($this->boolean('authorize')) { | 
					
						
							|  |  |  | 			 | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2008-05-26 07:27:00 -04:00
										 |  |  | 	} | 
					
						
							|  |  |  | } |