]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
On the OpenID settings page, allow users to remove trustroots.
authorCraig Andrews <candrews@integralblue.com>
Tue, 9 Mar 2010 02:43:09 +0000 (21:43 -0500)
committerCraig Andrews <candrews@integralblue.com>
Tue, 9 Mar 2010 02:43:34 +0000 (21:43 -0500)
plugins/OpenID/openidsettings.php

index 3fc3d61289bc5f9164b3e05bf981d7469a7fe9f6..16142cf48c36267a9e14a26ef7bbd35a01b1704b 100644 (file)
@@ -176,6 +176,43 @@ class OpenidsettingsAction extends AccountSettingsAction
                 }
             }
         }
+
+        $this->elementStart('form', array('method' => 'post',
+                                          'id' => 'form_settings_openid_trustroots',
+                                          'class' => 'form_settings',
+                                          'action' =>
+                                          common_local_url('openidsettings')));
+        $this->elementStart('fieldset', array('id' => 'settings_openid_trustroots'));
+        $this->element('legend', null, _m('OpenID Trusted Sites'));
+        $this->hidden('token', common_session_token());
+        $this->element('p', 'form_guide',
+                       _m('The following sites are allowed to access your ' .
+                       'identity and log you in. You can remove a site from ' .
+                       'this list to deny it access to your OpenID.'));
+        $this->elementStart('ul', 'form_data');
+        $user_openid_trustroot = new User_openid_trustroot();
+        $user_openid_trustroot->user_id=$user->id;
+        if($user_openid_trustroot->find()) {
+            while($user_openid_trustroot->fetch()) {
+                $this->elementStart('li');
+                $this->element('input', array('name' => 'openid_trustroot[]',
+                                              'type' => 'checkbox',
+                                              'class' => 'checkbox',
+                                              'value' => $user_openid_trustroot->trustroot,
+                                              'id' => 'openid_trustroot_' . crc32($user_openid_trustroot->trustroot)));
+                $this->element('label', array('class'=>'checkbox', 'for' => 'openid_trustroot_' . crc32($user_openid_trustroot->trustroot)),
+                               $user_openid_trustroot->trustroot);
+                $this->elementEnd('li');
+            }
+        }
+        $this->elementEnd('ul');
+        $this->element('input', array('type' => 'submit',
+                                      'id' => 'settings_openid_trustroots_action-submit',
+                                      'name' => 'remove_trustroots',
+                                      'class' => 'submit',
+                                      'value' => _m('Remove')));
+        $this->elementEnd('fieldset');
+        $this->elementEnd('form');
     }
 
     /**
@@ -204,11 +241,44 @@ class OpenidsettingsAction extends AccountSettingsAction
             }
         } else if ($this->arg('remove')) {
             $this->removeOpenid();
+        } else if($this->arg('remove_trustroots')) {
+            $this->removeTrustroots();
         } else {
             $this->showForm(_m('Something weird happened.'));
         }
     }
 
+    /**
+     * Handles a request to remove OpenID trustroots from the user's account
+     *
+     * Validates input and, if everything is OK, deletes the trustroots.
+     * Reloads the form with a success or error notification.
+     *
+     * @return void
+     */
+
+    function removeTrustroots()
+    {
+        $user = common_current_user();
+        $trustroots = $this->arg('openid_trustroot');
+        if($trustroots) {
+            foreach($trustroots as $trustroot) {
+                $user_openid_trustroot = User_openid_trustroot::pkeyGet(
+                                                array('user_id'=>$user->id, 'trustroot'=>$trustroot));
+                if($user_openid_trustroot) {
+                    $user_openid_trustroot->delete();
+                } else {
+                    $this->showForm(_m('No such OpenID trustroot.'));
+                    return;
+                }
+            }
+            $this->showForm(_m('Trustroots removed'), true);
+        } else {
+            $this->showForm();
+        }
+        return;
+    }
+
     /**
      * Handles a request to remove an OpenID from the user's account
      *