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()): ?>
-  &#160;<?php echo link_to(__('cancel'), 'user/show?id='.$user->getId()) ?>
-<?php else: ?>
-  &#160;<?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
-~----------~----~----~----~------~----~------~--~---

Reply via email to