From 7c34ac8cc2c3813f05deb8ac80e511648b441914 Mon Sep 17 00:00:00 2001
From: Zach Copley <zach@status.net>
Date: Wed, 13 Jan 2010 07:33:51 +0000
Subject: [PATCH] Rework application registration workflow to be more private

---
 actions/editapplication.php                 |  8 +--
 actions/newapplication.php                  |  8 +--
 actions/{apps.php => oauthappssettings.php} | 10 +---
 actions/oauthconnectionssettings.php        |  2 +-
 actions/showapplication.php                 | 25 +++------
 lib/applicationeditform.php                 | 61 ++++++++++-----------
 lib/applicationlist.php                     | 13 ++---
 lib/router.php                              | 23 +++-----
 8 files changed, 58 insertions(+), 92 deletions(-)
 rename actions/{apps.php => oauthappssettings.php} (94%)

diff --git a/actions/editapplication.php b/actions/editapplication.php
index a0ed3117a7..a6db87c61e 100644
--- a/actions/editapplication.php
+++ b/actions/editapplication.php
@@ -125,10 +125,7 @@ class EditApplicationAction extends OwnerDesignAction
 
         if ($this->arg('cancel')) {
             common_redirect(common_local_url('showapplication',
-                                             array(
-                                                   'nickname' => $cur->nickname,
-                                                   'id' => $this->app->id)
-                                             ), 303);
+                                             array('id' => $this->app->id)), 303);
         } elseif ($this->arg('save')) {
             $this->trySave();
         } else {
@@ -253,8 +250,7 @@ class EditApplicationAction extends OwnerDesignAction
 
         $this->app->uploadLogo();
 
-        common_redirect(common_local_url('apps',
-            array('nickname' => $cur->nickname)), 303);
+        common_redirect(common_local_url('oauthappssettings'), 303);
     }
 
 }
diff --git a/actions/newapplication.php b/actions/newapplication.php
index 7bb81095dd..c499fe7c76 100644
--- a/actions/newapplication.php
+++ b/actions/newapplication.php
@@ -114,8 +114,7 @@ class NewApplicationAction extends OwnerDesignAction
     $cur = common_current_user();
 
     if ($this->arg('cancel')) {
-        common_redirect(common_local_url('apps',
-                         array('nickname' => $cur->nickname)), 303);
+        common_redirect(common_local_url('oauthappssettings'), 303);
     } elseif ($this->arg('save')) {
         $this->trySave();
     } else {
@@ -147,7 +146,7 @@ class NewApplicationAction extends OwnerDesignAction
 
     function trySave()
     {
-    $name         = $this->trimmed('name');
+        $name         = $this->trimmed('name');
         $description  = $this->trimmed('description');
         $source_url   = $this->trimmed('source_url');
         $organization = $this->trimmed('organization');
@@ -270,8 +269,7 @@ class NewApplicationAction extends OwnerDesignAction
 
         $app->query('COMMIT');
 
-        common_redirect(common_local_url('apps',
-            array('nickname' => $cur->nickname)), 303);
+        common_redirect(common_local_url('oauthappssettings'), 303);
 
     }
 
diff --git a/actions/apps.php b/actions/oauthappssettings.php
similarity index 94%
rename from actions/apps.php
rename to actions/oauthappssettings.php
index 7c7b24570f..6c0670b17b 100644
--- a/actions/apps.php
+++ b/actions/oauthappssettings.php
@@ -46,7 +46,7 @@ require_once INSTALLDIR . '/lib/applicationlist.php';
  * @see      SettingsAction
  */
 
-class AppsAction extends SettingsAction
+class OauthappssettingsAction extends SettingsAction
 {
     var $page = 0;
 
@@ -116,10 +116,7 @@ class AppsAction extends SettingsAction
 
         $this->elementStart('p', array('id' => 'application_register'));
         $this->element('a',
-            array('href' => common_local_url(
-                'newapplication',
-                array('nickname' => $user->nickname)
-                ),
+            array('href' => common_local_url('newapplication'),
                   'class' => 'more'
             ),
             'Register a new application');
@@ -129,8 +126,7 @@ class AppsAction extends SettingsAction
             $this->page > 1,
             $cnt > APPS_PER_PAGE,
             $this->page,
-            'apps',
-            array('nickname' => $user->nickname)
+            'oauthappssettings'
         );
     }
 
diff --git a/actions/oauthconnectionssettings.php b/actions/oauthconnectionssettings.php
index 56e7b02fba..99bb9022b2 100644
--- a/actions/oauthconnectionssettings.php
+++ b/actions/oauthconnectionssettings.php
@@ -158,7 +158,7 @@ class OauthconnectionssettingsAction extends ConnectSettingsAction
        $this->elementStart('p');
        $this->raw(_('Developers can edit the registration settings for their applications '));
        $this->element('a',
-           array('href' => common_local_url('apps', array('nickname' => $cur->nickname))),
+           array('href' => common_local_url('oauthappssettings')),
                'here.');
        $this->elementEnd('p');
     }
diff --git a/actions/showapplication.php b/actions/showapplication.php
index f2ff8b9002..bd33371368 100644
--- a/actions/showapplication.php
+++ b/actions/showapplication.php
@@ -211,15 +211,9 @@ class ShowApplicationAction extends OwnerDesignAction
         $this->elementStart('ul');
         $this->elementStart('li', 'entity_edit');
         $this->element('a',
-            array('href' =>
-                common_local_url(
-                    'editapplication',
-                    array(
-                        'nickname' => $this->owner->nickname,
-                        'id' => $this->application->id
-                    )
-                )
-            ), 'Edit');
+                       array('href' => common_local_url('editapplication',
+                                                        array('id' => $this->application->id))),
+                       'Edit');
         $this->elementEnd('li');
 
         $this->elementStart('li', 'entity_reset_keysecret');
@@ -228,8 +222,7 @@ class ShowApplicationAction extends OwnerDesignAction
             'class' => 'form_reset_key',
             'method' => 'POST',
             'action' => common_local_url('showapplication',
-                array('nickname' => $cur->nickname,
-                      'id' => $this->application->id))));
+                array('id' => $this->application->id))));
 
         $this->elementStart('fieldset');
         $this->hidden('token', common_session_token());
@@ -273,13 +266,9 @@ class ShowApplicationAction extends OwnerDesignAction
 
         $this->elementStart('p', array('id' => 'application_action'));
         $this->element('a',
-            array(
-                'href' => common_local_url(
-                    'apps',
-                    array('nickname' => $this->owner->nickname)),
-                'class' => 'more'
-            ),
-            'View your applications');
+            array('href' => common_local_url('oauthappssettings'),
+                  'class' => 'more'),
+                  'View your applications');
         $this->elementEnd('p');
     }
 
diff --git a/lib/applicationeditform.php b/lib/applicationeditform.php
index e9ab467804..040d3bf74b 100644
--- a/lib/applicationeditform.php
+++ b/lib/applicationeditform.php
@@ -119,12 +119,9 @@ class ApplicationEditForm extends Form
 
         if (!empty($this->application)) {
             return common_local_url('editapplication',
-                array('id' => $this->application->id,
-                      'nickname' => $cur->nickname)
-            );
+                                    array('id' => $this->application->id));
         } else {
-            return common_local_url('newapplication',
-                array('nickname' => $cur->nickname));
+            return common_local_url('newapplication');
         }
     }
 
@@ -149,7 +146,7 @@ class ApplicationEditForm extends Form
     {
         if ($this->application) {
             $id                = $this->application->id;
-	    $icon              = $this->application->icon;
+            $icon              = $this->application->icon;
             $name              = $this->application->name;
             $description       = $this->application->description;
             $source_url        = $this->application->source_url;
@@ -160,7 +157,7 @@ class ApplicationEditForm extends Form
             $this->access_type = $this->application->access_type;
         } else {
             $id                = '';
-	    $icon              = '';
+            $icon              = '';
             $name              = '';
             $description       = '';
             $source_url        = '';
@@ -171,26 +168,26 @@ class ApplicationEditForm extends Form
             $this->access_type = '';
         }
 
-	$this->out->hidden('token', common_session_token());
+        $this->out->hidden('token', common_session_token());
 
         $this->out->elementStart('ul', 'form_data');
 
-	$this->out->elementStart('li', array('id' => 'application_icon'));
+        $this->out->elementStart('li', array('id' => 'application_icon'));
 
-	if (!empty($icon)) {
-	    $this->out->element('img', array('src' => $icon));
-	}
+        if (!empty($icon)) {
+            $this->out->element('img', array('src' => $icon));
+        }
 
-	$this->out->element('label', array('for' => 'app_icon'),
-                                _('Icon'));
+        $this->out->element('label', array('for' => 'app_icon'),
+                            _('Icon'));
         $this->out->element('input', array('name' => 'app_icon',
-                                      'type' => 'file',
-                                      'id' => 'app_icon'));
+                                           'type' => 'file',
+                                           'id' => 'app_icon'));
         $this->out->element('p', 'form_guide', _('Icon for this application'));
         $this->out->element('input', array('name' => 'MAX_FILE_SIZE',
-                                      'type' => 'hidden',
-                                      'id' => 'MAX_FILE_SIZE',
-                                      'value' => ImageFile::maxFileSizeInt()));
+                                           'type' => 'hidden',
+                                           'id' => 'MAX_FILE_SIZE',
+                                           'value' => ImageFile::maxFileSizeInt()));
         $this->out->elementEnd('li');
 
         $this->out->elementStart('li');
@@ -207,13 +204,13 @@ class ApplicationEditForm extends Form
         $maxDesc = Oauth_application::maxDesc();
         if ($maxDesc > 0) {
             $descInstr = sprintf(_('Describe your application in %d chars'),
-                                $maxDesc);
+                                 $maxDesc);
         } else {
             $descInstr = _('Describe your application');
         }
         $this->out->textarea('description', _('Description'),
                         ($this->out->arg('description')) ? $this->out->arg('description') : $description,
-                        $descInstr);
+                             $descInstr);
 
         $this->out->elementEnd('li');
 
@@ -259,8 +256,8 @@ class ApplicationEditForm extends Form
         $this->out->element('input', $attrs);
 
         $this->out->element('label', array('for' => 'app_type-browser',
-                                      'class' => 'radio'),
-                                      _('Browser'));
+                                           'class' => 'radio'),
+                            _('Browser'));
 
         $attrs = array('name' => 'app_type',
                        'type' => 'radio',
@@ -275,8 +272,8 @@ class ApplicationEditForm extends Form
         $this->out->element('input', $attrs);
 
         $this->out->element('label', array('for' => 'app_type-desktop',
-                                      'class' => 'radio'),
-                                      _('Desktop'));
+                                           'class' => 'radio'),
+                            _('Desktop'));
         $this->out->element('p', 'form_guide', _('Type of application, browser or desktop'));
         $this->out->elementEnd('li');
 
@@ -298,8 +295,8 @@ class ApplicationEditForm extends Form
         $this->out->element('input', $attrs);
 
         $this->out->element('label', array('for' => 'default_access_type-ro',
-                                      'class' => 'radio'),
-                                      _('Read-only'));
+                                           'class' => 'radio'),
+                            _('Read-only'));
 
         $attrs = array('name' => 'default_access_type',
                        'type' => 'radio',
@@ -309,15 +306,15 @@ class ApplicationEditForm extends Form
 
         if ($this->application->access_type & Oauth_application::$readAccess
             && $this->application->access_type & Oauth_application::$writeAccess
-        ) {
+            ) {
             $attrs['checked'] = 'checked';
         }
 
         $this->out->element('input', $attrs);
 
         $this->out->element('label', array('for' => 'default_access_type-rw',
-                                      'class' => 'radio'),
-                                      _('Read-write'));
+                                           'class' => 'radio'),
+                            _('Read-write'));
         $this->out->element('p', 'form_guide', _('Default access for this application: read-only, or read-write'));
 
         $this->out->elementEnd('li');
@@ -334,8 +331,8 @@ class ApplicationEditForm extends Form
     function formActions()
     {
         $this->out->submit('cancel', _('Cancel'), 'submit form_action-primary',
-            'cancel', _('Cancel'));
+                           'cancel', _('Cancel'));
         $this->out->submit('save', _('Save'), 'submit form_action-secondary',
-            'save', _('Save'));
+                           'save', _('Save'));
     }
 }
diff --git a/lib/applicationlist.php b/lib/applicationlist.php
index 15c2d588a3..f2eaefb401 100644
--- a/lib/applicationlist.php
+++ b/lib/applicationlist.php
@@ -64,7 +64,7 @@ class ApplicationList extends Widget
         $this->application = $application;
         $this->owner       = $owner;
         $this->action      = $action;
-	$this->connections = $connections;
+        $this->connections = $connections;
     }
 
     function show()
@@ -97,10 +97,9 @@ class ApplicationList extends Widget
         $this->out->elementStart('span', 'vcard author');
         if (!$this->connections) {
             $this->out->elementStart('a',
-                            array('href' => common_local_url('showapplication',
-                                                array('nickname' => $user->nickname,
-                                                      'id' => $this->application->id)),
-                                  'class' => 'url'));
+                                     array('href' => common_local_url('showapplication',
+                                                                      array('id' => $this->application->id)),
+                                                                      'class' => 'url'));
 
         } else {
             $this->out->elementStart('a', array('href' =>  $this->application->source_url,
@@ -154,8 +153,4 @@ class ApplicationList extends Widget
         return;
     }
 
-    function highlight($text)
-    {
-        return htmlspecialchars($text);
-    }
 }
diff --git a/lib/router.php b/lib/router.php
index d6e448c2f9..42bff27788 100644
--- a/lib/router.php
+++ b/lib/router.php
@@ -141,7 +141,7 @@ class Router
             // settings
 
             foreach (array('profile', 'avatar', 'password', 'im', 'oauthconnections',
-                           'email', 'sms', 'userdesign', 'other') as $s) {
+                           'oauthapps', 'email', 'sms', 'userdesign', 'other') as $s) {
                 $m->connect('settings/'.$s, array('action' => $s.'settings'));
             }
 
@@ -634,28 +634,23 @@ class Router
             // user stuff
 
             foreach (array('subscriptions', 'subscribers',
-                           'nudge', 'all', 'foaf', 'xrds', 'apps',
+                           'nudge', 'all', 'foaf', 'xrds',
                            'replies', 'inbox', 'outbox', 'microsummary') as $a) {
                 $m->connect(':nickname/'.$a,
                             array('action' => $a),
                             array('nickname' => '[a-zA-Z0-9]{1,64}'));
             }
 
-            $m->connect(':nickname/apps',
-                array('action' => 'apps'),
-                array('nickname' => '['.NICKNAME_FMT.']{1,64}'));
-            $m->connect(':nickname/apps/show/:id',
+            $m->connect('settings/oauthapps/show/:id',
                 array('action' => 'showapplication'),
-                array('nickname' => '['.NICKNAME_FMT.']{1,64}',
-                      'id' => '[0-9]+')
+                array('id' => '[0-9]+')
             );
-            $m->connect(':nickname/apps/new',
-                array('action' => 'newapplication'),
-                array('nickname' => '['.NICKNAME_FMT.']{1,64}'));
-            $m->connect(':nickname/apps/edit/:id',
+            $m->connect('settings/oauthapps/new',
+                array('action' => 'newapplication')
+            );
+            $m->connect('settings/oauthapps/edit/:id',
                 array('action' => 'editapplication'),
-                array('nickname' => '['.NICKNAME_FMT.']{1,64}',
-                      'id' => '[0-9]+')
+                array('id' => '[0-9]+')
             );
 
             $m->connect('api/oauth/request_token',
-- 
2.39.5