X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=actions%2Fuserauthorization.php;h=ee156bd79eef606e7fc3465b1a4f1d4965767d5d;hb=0f374fb944438644b4e1059fc84995615e92e870;hp=5b8a8bdc8095b9c99d86fbc4fc801f9715c8f21e;hpb=2fe978e1bb044a2ba8920156184dee7bb57c728b;p=quix0rs-gnu-social.git diff --git a/actions/userauthorization.php b/actions/userauthorization.php index 5b8a8bdc80..ee156bd79e 100644 --- a/actions/userauthorization.php +++ b/actions/userauthorization.php @@ -22,6 +22,67 @@ if (!defined('LACONICA')) { exit(1); } class UserauthorizationAction extends Action { function handle($args) { parent::handle($args); - common_server_error(_t('Not yet implemented.')); + + if ($_SERVER['REQUEST_METHOD'] == 'POST') { + $this->send_authorization(); + } else { + try { + $req = $this->get_request(); + $server = common_oauth_server(); + $server->get_version($req); + $consumer = $server->get_consumer($req); + $token = $server->get_token($req, $consumer, "request"); + $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')) { + + } } }