2012-01-26 4 views
0

cakephp 2では、会社とユーザーのテーブルに新しいレコードを作成するフォームがあります。cakephpはモデルのパスワードをハッシュしていません

私の問題は、両方のテーブルに保存されますが、UmuserテーブルにパスワードまたはIDキーをハッシュしないということです。それはまったくUmuserモデルとは何も呼んでいないようです。これは保存前であり、それはそれを呼び出さない。

public function beforeSave() { 
    if (isset($this->data[$this->alias]['password'])) { 
     $this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']); 
    } 
    return true; 
} 

Umuserはpuging/Usermin/Modelsディレクトリにあります。

会社コントローラ

は、データを保存するには:それはデータを保存して、それを行うにはUmuserモデルをバイパスする理由

public function add() { 
    if ($this->request->is('post')) { 
     $this->Company->create(); 

     if ($this->Company->saveAll($this->request->data, array('validate'=>'first'))) { // Should ensure both sets of model data get validated 
      $this->Session->setFlash(__('The company has been saved')); 
      $this->redirect(array('action' => 'index')); 
     } else { 
      $this->Session->setFlash(__('The company could not be saved. Please, try again.')); 
     } 
    } 
} 

カントを参照してください。

+0

を保存されている場合

その後、ここに投稿が関連するもの2つのモデルがあります: このような何かをしようか? – entropid

+0

私のヒント:コードを乾燥した状態に保つために、この物を中央に置いてください。振る舞いは、モデルレベルでそれを行う素晴らしい方法です。http://www.dereuromark.de/2011/08/25/working-with-passwords-in-cakephp/ – mark

+0

はい、モデルが関連付けられています。 umuserテーブルにはcompany_idというフィールドがあります。 beforesaveにハッシュされていないデータを保存します –

答えて

1

$ this-> data [$ this-> alias] ['password'])おそらくここで間違っていると思われます。

public function beforeSave() { 
if (isset($this->data[$this->alias]['password'])) { 
    $this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']); 
    return true; 
}else{ 
    return false; // if $this->data[$this->alias]['password'] is not set, don't save the model 
} 

}会社が

関連する問題