Author: david
Date: Wed Sep 30 12:43:26 2009
New Revision: 3611
Log:
Reinstate user 'password reset' link for users to reset their own passwords.
Fixes issue #1034.
Modified:
trunk/apps/qubit/modules/user/actions/passwordEditAction.class.php
trunk/apps/qubit/modules/user/config/view.yml
trunk/apps/qubit/modules/user/templates/passwordEditSuccess.php
trunk/apps/qubit/modules/user/templates/showSuccess.php
Modified: trunk/apps/qubit/modules/user/actions/passwordEditAction.class.php
==============================================================================
--- trunk/apps/qubit/modules/user/actions/passwordEditAction.class.php Wed Sep
30 10:38:19 2009 (r3610)
+++ trunk/apps/qubit/modules/user/actions/passwordEditAction.class.php Wed Sep
30 12:43:26 2009 (r3611)
@@ -21,22 +21,71 @@
{
public function execute($request)
{
- $this->user = QubitUser::getById($this->getRequestParameter('id'));
- $this->forward404Unless($this->user);
+ $this->form = new sfForm;
+ $this->user = new QubitUser;
+
+ if (isset($this->request->id))
+ {
+ $this->user = QubitUser::getById($this->request->id);
+
+ if (!isset($this->user))
+ {
+ $this->forward404();
+ }
+ }
+
+ // Test password vs. confirm password
+ $this->form->getValidatorSchema()->setOption('allow_extra_fields', true);
+ $this->form->getValidatorSchema()->setPostValidator(new
sfValidatorSchemaCompare(
+ 'password', '==', 'confirmPassword',
+ array('throw_global_error' => true),
+ array('invalid' => 'Your password confirmation did not match you
password.')
+ ));
+
+ // password
+ $this->form->setDefault('password', null);
+ $this->form->setValidator('password', new sfValidatorString);
+ $this->form->setWidget('password', new sfWidgetFormInputPassword);
+
+ // confirm password
+ $this->form->setDefault('confirmPassword', null);
+ $this->form->setValidator('confirmPassword', new sfValidatorString);
+ $this->form->setWidget('confirmPassword', new sfWidgetFormInputPassword);
$this->isAdministrator = false;
if ($this->getUser()->hasCredential('administrator'))
- {
+ {
$this->isAdministrator = true;
- }
+ }
//except for administrators, only allow users to reset their own password
- if ($this->isAdministrator == false)
- {
+ if (!$this->isAdministrator)
+ {
if ($this->getRequestParameter('id') !=
$this->getUser()->getAttribute('user_id'))
- {
- $this->redirect('admin/permission');
- }
+ {
+ $this->redirect(array('module' => 'admin', 'action' => 'permission'));
+ }
+ }
+
+ if ($request->isMethod('post'))
+ {
+ $this->form->bind($request->getPostParameters());
+
+ if ($this->form->isValid())
+ {
+ $this->processForm();
+ $this->redirect(array('module' => 'user', 'action' => 'show', 'id' =>
$this->user->id));
}
+ }
+ }
+
+ protected function processForm()
+ {
+ if (0 < strlen(trim($this->form->getValue('password'))))
+ {
+ $this->user->setPassword($this->form->getValue('password'));
+ }
+
+ $this->user->save();
}
}
Modified: trunk/apps/qubit/modules/user/config/view.yml
==============================================================================
--- trunk/apps/qubit/modules/user/config/view.yml Wed Sep 30 10:38:19
2009 (r3610)
+++ trunk/apps/qubit/modules/user/config/view.yml Wed Sep 30 12:43:26
2009 (r3611)
@@ -1,4 +1,17 @@
editSuccess:
stylesheets:
/vendor/yui/autocomplete/assets/skins/sam/autocomplete: { position: first }
- javascripts: [/vendor/yui/connection/connection-min,
/vendor/yui/datasource/datasource-min,
/vendor/yui/autocomplete/autocomplete-min, autocomplete, multiDelete,
/sfDrupalPlugin/vendor/drupal/misc/collapse,
/sfDrupalPlugin/vendor/drupal/misc/textarea,
/sfDrupalPlugin/vendor/drupal/modules/user/user]
+ javascripts:
+ - /vendor/yui/connection/connection-min
+ - /vendor/yui/datasource/datasource-min
+ - /vendor/yui/autocomplete/autocomplete-min
+ - autocomplete
+ - multiDelete
+ - /sfDrupalPlugin/vendor/drupal/misc/collapse
+ - /sfDrupalPlugin/vendor/drupal/misc/textarea
+ - /sfDrupalPlugin/vendor/drupal/modules/user/user
+
+passwordEditSuccess:
+ javascripts:
+ - /sfDrupalPlugin/vendor/drupal/misc/textarea
+ - /sfDrupalPlugin/vendor/drupal/modules/user/user
Modified: trunk/apps/qubit/modules/user/templates/passwordEditSuccess.php
==============================================================================
--- trunk/apps/qubit/modules/user/templates/passwordEditSuccess.php Wed Sep
30 10:38:19 2009 (r3610)
+++ trunk/apps/qubit/modules/user/templates/passwordEditSuccess.php Wed Sep
30 12:43:26 2009 (r3611)
@@ -1,31 +1,34 @@
+<?php use_helper('Javascript') ?>
+
<div class="pageTitle"><?php echo __('reset password'); ?></div>
-<?php echo form_tag('user/passwordUpdate') ?>
+<form method="post" action="<?php echo url_for(array('module' => 'user',
'action' => 'passwordEdit')) ?>">
<?php echo object_input_hidden_tag($user, 'getId') ?>
-<table class="detail">
-<tbody>
+<div class="formHeader">
+ <?php echo __('reset password: %1%', array('%1%' => $user)) ?>
+</div>
-<tr><td colspan="2" class="headerCell">
- <?php echo __('reset password: %1%', array('%1%' => $user)) ?>
-</td></tr>
-
-<th><?php echo __('new password'); ?></th>
- <td><?php echo input_tag('sha1_password', '','maxlength=20') ?></td>
-</tr>
-
-</tbody>
-</table>
-
-
-<div class="menu-action">
-<?php if ($user->getId()): ?>
-  <?php echo link_to(__('cancel'), 'user/show?id='.$user->getId()) ?>
-<?php else: ?>
-  <?php echo link_to(__('cancel'), 'user/show?id='.$user->getId()) ?>
-<?php endif; ?>
-<?php echo submit_tag(__('save')) ?>
+<fieldset>
+<div>
+ <?php $settings = json_encode(array('password' => array('strengthTitle' =>
'Password strength:', 'hasWeaknesses' => 'To make your password stronger:',
'tooShort' => 'Make it at least six characters', 'addLowerCase' => 'Add
lowercase letters', 'addUpperCase' => 'Add uppercase letters', 'addNumbers' =>
'Add numbers', 'addPunctuation' => 'Add punctuation', 'sameAsUsername' => 'Make
it different from your username', 'confirmSuccess' => 'yes', 'confirmFailure'
=> 'no', 'confirmTitle' => 'Passwords match:', 'username' => ''))) ?>
+ <?php echo javascript_tag(<<<EOF
+jQuery.extend(Drupal.settings, $settings);
+EOF
+) ?>
+
+ <?php echo $form->renderGlobalErrors() ?>
+
+ <?php echo $form->password->label(__('change
password'))->renderRow(array('class' => 'password-field')) ?>
+ <br style="clear: both" />
+ <?php echo $form->confirmPassword->label(__('confirm
password'))->renderRow(array('class' => 'password-confirm')) ?>
</div>
+</fieldset>
+
+<ul class="actions">
+ <li><?php echo link_to(__('Cancel'), array('module' => 'user', 'action' =>
'show', 'id' => $user->getId())) ?></li>
+ <li><?php echo submit_tag(__('Save')) ?></li>
+</ul>
</form>
Modified: trunk/apps/qubit/modules/user/templates/showSuccess.php
==============================================================================
--- trunk/apps/qubit/modules/user/templates/showSuccess.php Wed Sep 30
10:38:19 2009 (r3610)
+++ trunk/apps/qubit/modules/user/templates/showSuccess.php Wed Sep 30
12:43:26 2009 (r3611)
@@ -22,6 +22,13 @@
</tr>
<?php endif; ?>
+<?php if (!$sf_user->hasCredential('administrator')): ?>
+<tr>
+ <th><?php echo __('password'); ?></th>
+ <td><?php echo link_to(__('update password'), array('module' => 'user',
'action' => 'passwordEdit', 'id' => $user->id)) ?></td>
+</tr>
+<?php endif; ?>
+
<?php if (0 < count($groups = $user->getAclGroups())): ?>
<tr>
<th><?php echo __('user groups'); ?></th>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Qubit Toolkit Commits" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.ca/group/qubit-commits?hl=en
-~----------~----~----~----~------~----~------~--~---