X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=plugins%2FOpenID%2Fopenidsettings.php;h=f1a62384b4d2c4f5e86359b13fabbd449b8cd70a;hb=707076fca9d4355673e3d570caa19ceb99a1064d;hp=3ad46f5f57ce6824ff4717f3be37ba176f593c80;hpb=d7ae0ed4fd755ebad0788a17d0f2fb6a6ca9d63b;p=quix0rs-gnu-social.git diff --git a/plugins/OpenID/openidsettings.php b/plugins/OpenID/openidsettings.php index 3ad46f5f57..f1a62384b4 100644 --- a/plugins/OpenID/openidsettings.php +++ b/plugins/OpenID/openidsettings.php @@ -27,11 +27,10 @@ * @link http://status.net/ */ -if (!defined('STATUSNET') && !defined('LACONICA')) { +if (!defined('STATUSNET')) { exit(1); } -require_once INSTALLDIR.'/lib/accountsettingsaction.php'; require_once INSTALLDIR.'/plugins/OpenID/openid.php'; /** @@ -45,18 +44,17 @@ require_once INSTALLDIR.'/plugins/OpenID/openid.php'; * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ - -class OpenidsettingsAction extends AccountSettingsAction +class OpenidsettingsAction extends SettingsAction { /** * Title of the page * * @return string Page title */ - function title() { - return _('OpenID settings'); + // TRANS: Title of OpenID settings page for a user. + return _m('TITLE','OpenID settings'); } /** @@ -64,12 +62,13 @@ class OpenidsettingsAction extends AccountSettingsAction * * @return string Instructions for use */ - function getInstructions() { - return _('[OpenID](%%doc.openid%%) lets you log into many sites' . - ' with the same user account.'. - ' Manage your associated OpenIDs from here.'); + // TRANS: Form instructions for OpenID settings. + // TRANS: This message contains Markdown links in the form [description](link). + return _m('[OpenID](%%doc.openid%%) lets you log into many sites ' . + 'with the same user account. '. + 'Manage your associated OpenIDs from here.'); } function showScripts() @@ -85,39 +84,44 @@ class OpenidsettingsAction extends AccountSettingsAction * * @return void */ - function showContent() { $user = common_current_user(); - $this->elementStart('form', array('method' => 'post', - 'id' => 'form_settings_openid_add', - 'class' => 'form_settings', - 'action' => - common_local_url('openidsettings'))); - $this->elementStart('fieldset', array('id' => 'settings_openid_add')); - $this->element('legend', null, _('Add OpenID')); - $this->hidden('token', common_session_token()); - $this->element('p', 'form_guide', - _('If you want to add an OpenID to your account, ' . - 'enter it in the box below and click "Add".')); - $this->elementStart('ul', 'form_data'); - $this->elementStart('li'); - $this->element('label', array('for' => 'openid_url'), - _('OpenID URL')); - $this->element('input', array('name' => 'openid_url', - 'type' => 'text', - 'id' => 'openid_url')); - $this->elementEnd('li'); - $this->elementEnd('ul'); - $this->element('input', array('type' => 'submit', - 'id' => 'settings_openid_add_action-submit', - 'name' => 'add', - 'class' => 'submit', - 'value' => _('Add'))); - $this->elementEnd('fieldset'); - $this->elementEnd('form'); - + if (!common_config('openid', 'trusted_provider')) { + $this->elementStart('form', array('method' => 'post', + 'id' => 'form_settings_openid_add', + 'class' => 'form_settings', + 'action' => + common_local_url('openidsettings'))); + $this->elementStart('fieldset', array('id' => 'settings_openid_add')); + + // TRANS: Fieldset legend. + $this->element('legend', null, _m('LEGEND','Add OpenID')); + $this->hidden('token', common_session_token()); + $this->element('p', 'form_guide', + // TRANS: Form guide. + _m('If you want to add an OpenID to your account, ' . + 'enter it in the box below and click "Add".')); + $this->elementStart('ul', 'form_data'); + $this->elementStart('li'); + $this->element('label', array('for' => 'openid_url'), + // TRANS: Field label. + _m('OpenID URL')); + $this->element('input', array('name' => 'openid_url', + 'type' => 'text', + 'id' => 'openid_url')); + $this->elementEnd('li'); + $this->elementEnd('ul'); + $this->element('input', array('type' => 'submit', + 'id' => 'settings_openid_add_action-submit', + 'name' => 'add', + 'class' => 'submit', + // TRANS: Button text for adding an OpenID URL. + 'value' => _m('BUTTON','Add'))); + $this->elementEnd('fieldset'); + $this->elementEnd('form'); + } $oid = new User_openid(); $oid->user_id = $user->id; @@ -125,13 +129,14 @@ class OpenidsettingsAction extends AccountSettingsAction $cnt = $oid->find(); if ($cnt > 0) { - - $this->element('h2', null, _('Remove OpenID')); + // TRANS: Header on OpenID settings page. + $this->element('h2', null, _m('HEADER','Remove OpenID')); if ($cnt == 1 && !$user->password) { $this->element('p', 'form_guide', - _('Removing your only OpenID '. + // TRANS: Form guide. + _m('Removing your only OpenID '. 'would make it impossible to log in! ' . 'If you need to remove it, '. 'add another OpenID first.')); @@ -146,7 +151,8 @@ class OpenidsettingsAction extends AccountSettingsAction } else { $this->element('p', 'form_guide', - _('You can remove an OpenID from your account '. + // TRANS: Form guide. + _m('You can remove an OpenID from your account '. 'by clicking the button marked "Remove".')); $idx = 0; @@ -169,13 +175,54 @@ class OpenidsettingsAction extends AccountSettingsAction 'id' => 'remove'.$idx, 'name' => 'remove', 'class' => 'submit remove', - 'value' => _('Remove'))); + // TRANS: Button text to remove an OpenID. + 'value' => _m('BUTTON','Remove'))); $this->elementEnd('fieldset'); $this->elementEnd('form'); $idx++; } } } + + $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')); + // TRANS: Fieldset legend. + $this->element('legend', null, _m('OpenID Trusted Sites')); + $this->hidden('token', common_session_token()); + $this->element('p', 'form_guide', + // TRANS: 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', + // TRANS: Button text to remove an OpenID trustroot. + 'value' => _m('BUTTON','Remove'))); + $this->elementEnd('fieldset'); + $this->elementEnd('form'); } /** @@ -185,28 +232,68 @@ class OpenidsettingsAction extends AccountSettingsAction * * @return void */ - function handlePost() { // CSRF protection $token = $this->trimmed('token'); if (!$token || $token != common_session_token()) { - $this->showForm(_('There was a problem with your session token. '. + // TRANS: Client error displayed when the session token does not match or is not given. + $this->showForm(_m('There was a problem with your session token. '. 'Try again, please.')); return; } if ($this->arg('add')) { - $result = oid_authenticate($this->trimmed('openid_url'), - 'finishaddopenid'); - if (is_string($result)) { // error message - $this->showForm($result); + if (common_config('openid', 'trusted_provider')) { + // TRANS: Form validation error if no OpenID providers can be added. + $this->showForm(_m('Cannot add new providers.')); + } else { + $result = oid_authenticate($this->trimmed('openid_url'), + 'finishaddopenid'); + if (is_string($result)) { // error message + $this->showForm($result); + } } } else if ($this->arg('remove')) { $this->removeOpenid(); + } else if($this->arg('remove_trustroots')) { + $this->removeTrustroots(); + } else { + // TRANS: Unexpected form validation error. + $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 { + // TRANS: Form validation error when trying to remove a non-existing trustroot. + $this->showForm(_m('No such OpenID trustroot.')); + return; + } + } + // TRANS: Success message after removing trustroots. + $this->showForm(_m('Trustroots removed.'), true); } else { - $this->showForm(_('Something weird happened.')); + $this->showForm(); } + return; } /** @@ -217,7 +304,6 @@ class OpenidsettingsAction extends AccountSettingsAction * * @return void */ - function removeOpenid() { $openid_url = $this->trimmed('openid_url'); @@ -225,16 +311,19 @@ class OpenidsettingsAction extends AccountSettingsAction $oid = User_openid::staticGet('canonical', $openid_url); if (!$oid) { - $this->showForm(_('No such OpenID.')); + // TRANS: Form validation error for a non-existing OpenID. + $this->showForm(_m('No such OpenID.')); return; } $cur = common_current_user(); if (!$cur || $oid->user_id != $cur->id) { - $this->showForm(_('That OpenID does not belong to you.')); + // TRANS: Form validation error if OpenID is connected to another user. + $this->showForm(_m('That OpenID does not belong to you.')); return; } $oid->delete(); - $this->showForm(_('OpenID removed.'), true); + // TRANS: Success message after removing an OpenID. + $this->showForm(_m('OpenID removed.'), true); return; } }