2015-08-22 86 views
0

我有一個'Users'表,我保留所有帳戶相關的數據。它包含id, username, password, status, removed, last_loginCakePHP更新2列

默認情況下,創建帳戶時,status = 2removed = 0

我有一個拒絕應用程序的函數。當管理員拒絕應用程序時,status = 0removed = 1

現在,我的問題是,當我嘗試更新這些字段時,我也注意到我的密碼字段也更新。

這裏是我的拒絕代碼:

public function deny(){ 

     $user_id = $this->request->params['pass'][0]; 

     if(!$user_id){ 
      $this->Session->setFlash('Invalid action!', 'alert_box', array('class' => 'alert-danger'), 'member'); 
      $this->redirect(array('controller' => 'admin', 'action' => 'member')); 
     }else if($user_id){ 
      $this->User->id = $user_id; 

      if($this->User->save(array('User' => array('status' => 0,'removed' => 1)))){ 
       $this->Session->setFlash('Successfully denied the application of the selected applicant!', 'alert_box', array('class' => 'alert-success'), 'member'); 
      }else{ 
       $this->Session->setFlash('Failed to deny the application of the selected applicant!', 'alert_box', array('class' => 'alert-danger'), 'member'); 
      } 
      $this->redirect(array('controller' => 'admin', 'action'=>'member')); 
     } 
    } 

我不知道爲什麼我的密碼是不斷變化的。但更多的信息,這是我的用戶:: beforeSave:

public function beforeSave($options = array()) { 
     $this->data['User']['password'] = AuthComponent::password(
      $this->data['User']['password'] 
     ); 
     return true; 
    } 
+0

中存在'我不知道爲什麼我的密碼也在改變 - 你的保存前的函數無條件地將密碼添加到要保存的數據中,無論它是否存在於$ this-> data中。真的:這樣做的後果是不是一個無關緊要的保存? – AD7six

回答

0

您可以編輯beforeSave回調到這個

public function beforeSave($options = array()) { 
    if (isset($this->data['User']['password']) && $this->data['User']['password']) { 
     $this->data['User']['password'] = AuthComponent::password($this->data['User']['password']); 
    } 

    return true; 
} 

因此,哈希密碼,並僅如果給定的數組