]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/apioauthauthorize.php
Merge branch 'testing' of git@gitorious.org:statusnet/mainline into 0.9.x
[quix0rs-gnu-social.git] / actions / apioauthauthorize.php
index cdf9cb7df37c243e12617be4743fd162d5126b18..e7c6f376116d636bdd42c05d55ecb6b00c306739 100644 (file)
@@ -67,49 +67,16 @@ class ApiOauthAuthorizeAction extends ApiOauthAction
     {
         parent::prepare($args);
 
-        common_debug("apioauthauthorize");
-
         $this->nickname    = $this->trimmed('nickname');
         $this->password    = $this->arg('password');
         $this->oauth_token = $this->arg('oauth_token');
         $this->callback    = $this->arg('oauth_callback');
         $this->store       = new ApiStatusNetOAuthDataStore();
+        $this->app         = $this->store->getAppByRequestToken($this->oauth_token);
 
         return true;
     }
 
-    function getApp()
-    {
-        // Look up the full req token
-
-        $req_token = $this->store->lookup_token(null,
-                                                'request',
-                                                $this->oauth_token);
-
-        if (empty($req_token)) {
-
-            common_debug("Couldn't find request token!");
-
-            $this->clientError(_('Bad request.'));
-            return;
-        }
-
-        // Look up the app
-
-        $app = new Oauth_application();
-        $app->consumer_key = $req_token->consumer_key;
-        $result = $app->find(true);
-
-        if (!empty($result)) {
-            $this->app = $app;
-            return true;
-
-        } else {
-            common_debug("couldn't find the app!");
-            return false;
-        }
-    }
-
     /**
      * Handle input, produce output
      *
@@ -130,23 +97,17 @@ class ApiOauthAuthorizeAction extends ApiOauthAction
 
         } else {
 
-            // XXX: make better error messages
-
             if (empty($this->oauth_token)) {
-
-                common_debug("No request token found.");
-
-                $this->clientError(_('Bad request.'));
+                $this->clientError(_('No oauth_token parameter provided.'));
                 return;
             }
 
-            if (!$this->getApp()) {
-                $this->clientError(_('Bad request.'));
+            if (empty($this->app)) {
+                $this->clientError(_('Invalid token.'));
                 return;
             }
 
             $name = $this->app->name;
-            common_debug("Requesting auth for app: " . $name);
 
             $this->showForm();
         }
@@ -154,8 +115,6 @@ class ApiOauthAuthorizeAction extends ApiOauthAction
 
     function handlePost()
     {
-        common_debug("handlePost()");
-
         // check session token for CSRF protection.
 
         $token = $this->trimmed('token');
@@ -166,11 +125,6 @@ class ApiOauthAuthorizeAction extends ApiOauthAction
             return;
         }
 
-        if (!$this->getApp()) {
-            $this->clientError(_('Bad request.'));
-            return;
-        }
-
         // check creds
 
         $user = null;
@@ -202,7 +156,7 @@ class ApiOauthAuthorizeAction extends ApiOauthAction
 
                 if (!$result) {
                     common_log_db_error($appUser, 'DELETE', __FILE__);
-                    throw new ServerException(_('DB error deleting OAuth app user.'));
+                    throw new ServerException(_('Database error deleting OAuth application user.'));
                     return;
                 }
             }
@@ -228,7 +182,7 @@ class ApiOauthAuthorizeAction extends ApiOauthAction
 
             if (!$result) {
                 common_log_db_error($appUser, 'INSERT', __FILE__);
-                throw new ServerException(_('DB error inserting OAuth app user.'));
+                throw new ServerException(_('Database error inserting OAuth application user.'));
                 return;
             }
 
@@ -237,21 +191,15 @@ class ApiOauthAuthorizeAction extends ApiOauthAction
             // A callback specified in the app setup overrides whatever
             // is passed in with the request.
 
-            common_debug("Req token is authorized - doing callback");
-
             if (!empty($this->app->callback_url)) {
                 $this->callback = $this->app->callback_url;
             }
 
             if (!empty($this->callback)) {
 
-                // XXX: Need better way to build this redirect url.
-
                 $target_url = $this->getCallback($this->callback,
                                                  array('oauth_token' => $this->oauth_token));
 
-                common_debug("Doing callback to $target_url");
-
                 common_redirect($target_url, 303);
             } else {
                 common_debug("callback was empty!");
@@ -271,9 +219,12 @@ class ApiOauthAuthorizeAction extends ApiOauthAction
 
         } else if ($this->arg('deny')) {
 
+            $datastore = new ApiStatusNetOAuthDataStore();
+            $datastore->revoke_token($this->oauth_token, 0);
+
             $this->elementStart('p');
 
-            $this->raw(sprintf(_("The request token %s has been denied."),
+            $this->raw(sprintf(_("The request token %s has been denied and revoked."),
                                $this->oauth_token));
 
             $this->elementEnd('p');
@@ -308,27 +259,6 @@ class ApiOauthAuthorizeAction extends ApiOauthAction
         return _('An application would like to connect to your account');
     }
 
-    /**
-     * Show page notice
-     *
-     * Display a notice for how to use the page, or the
-     * error if it exists.
-     *
-     * @return void
-     */
-
-    function showPageNotice()
-    {
-        if ($this->error) {
-            $this->element('p', 'error', $this->error);
-        } else {
-            $instr  = $this->getInstructions();
-            $output = common_markup_to_html($instr);
-
-            $this->raw($output);
-        }
-    }
-
     /**
      * Shows the authorization form.
      *
@@ -338,44 +268,46 @@ class ApiOauthAuthorizeAction extends ApiOauthAction
     function showContent()
     {
         $this->elementStart('form', array('method' => 'post',
-                                          'id' => 'form_login',
+                                          'id' => 'form_apioauthauthorize',
                                           'class' => 'form_settings',
                                           'action' => common_local_url('apioauthauthorize')));
+        $this->elementStart('fieldset');
+        $this->element('legend', array('id' => 'apioauthauthorize_allowdeny'),
+                                 _('Allow or deny access'));
 
         $this->hidden('token', common_session_token());
         $this->hidden('oauth_token', $this->oauth_token);
         $this->hidden('oauth_callback', $this->callback);
 
-        $this->elementStart('fieldset');
-
-        $this->elementStart('ul');
+        $this->elementStart('ul', 'form_data');
         $this->elementStart('li');
+        $this->elementStart('p');
         if (!empty($this->app->icon)) {
             $this->element('img', array('src' => $this->app->icon));
         }
-        $this->elementEnd('li');
-        $this->elementStart('li');
 
         $access = ($this->app->access_type & Oauth_application::$writeAccess) ?
           'access and update' : 'access';
 
-        $msg = _("The application <b>%s</b> by <b>%s</b> would like " .
-                 "the ability to <b>%s</b> your account data.");
+        $msg = _('The application <strong>%1$s</strong> by ' .
+                 '<strong>%2$s</strong> would like the ability ' .
+                 'to <strong>%3$s</strong> your %4$s account data. ' .
+                 'You should only give access to your %4$s account ' .
+                 'to third parties you trust.');
 
         $this->raw(sprintf($msg,
                            $this->app->name,
                            $this->app->organization,
-                           $access));
-
+                           $access,
+                           common_config('site', 'name')));
+        $this->elementEnd('p');
         $this->elementEnd('li');
         $this->elementEnd('ul');
 
-        $this->elementEnd('fieldset');
-
         if (!common_logged_in()) {
 
             $this->elementStart('fieldset');
-            $this->element('legend', null, _('Login'));
+            $this->element('legend', null, _('Account'));
             $this->elementStart('ul', 'form_data');
             $this->elementStart('li');
             $this->input('nickname', _('Nickname'));
@@ -390,17 +322,18 @@ class ApiOauthAuthorizeAction extends ApiOauthAction
         }
 
         $this->element('input', array('id' => 'deny_submit',
-                                      'class' => 'submit',
+                                      'class' => 'submit submit form_action-primary',
                                       'name' => 'deny',
                                       'type' => 'submit',
                                       'value' => _('Deny')));
 
         $this->element('input', array('id' => 'allow_submit',
-                                      'class' => 'submit',
+                                      'class' => 'submit submit form_action-secondary',
                                       'name' => 'allow',
                                       'type' => 'submit',
                                       'value' => _('Allow')));
 
+        $this->elementEnd('fieldset');
         $this->elementEnd('form');
     }
 
@@ -416,7 +349,6 @@ class ApiOauthAuthorizeAction extends ApiOauthAction
     function getInstructions()
     {
         return _('Allow or deny access to your account information.');
-
     }
 
     /**
@@ -429,6 +361,31 @@ class ApiOauthAuthorizeAction extends ApiOauthAction
 
     function showLocalNav()
     {
+        // NOP
+    }
+
+    /**
+     * Show site notice.
+     *
+     * @return nothing
+     */
+
+    function showSiteNotice()
+    {
+        // NOP
+    }
+
+    /**
+     * Show notice form.
+     *
+     * Show the form for posting a new notice
+     *
+     * @return nothing
+     */
+
+    function showNoticeForm()
+    {
+        // NOP
     }
 
 }