- Code: Alles auswählen
- function set_password() {
if (!empty($this->data)) {
if ($this->User->field('password', array('User.id'=>$this->Auth->user('id'))) != Security::hash($this->data['User']['old_password'], null, true)) {
$this->Session->setFlash(__('Sie haben Ihr altes Passwort falsch eingegeben.', true));
$this->redirect(array('action'=>'set_password'));
} else {
if ($this->data['User']['new_password01'] != $this->data['User']['new_password02']) {
$this->Session->setFlash(__('Bitte geben Sie für das neue Passwort zweimal das Gleiche ein.', true));
$this->redirect(array('action'=>'set_password'));
} else {
$this->data['User']['id'] = $this->Auth->User('id');
$this->data['User']['password'] = Security::hash($this->data['User']['new_password01'], null, true);
if ($this->User->save($this->data)) {
$this->Session->setFlash(__('Sie haben Ihr Passwort erfolgreich geändert', true));
$this->redirect(array('action'=>'set_password'));
} else {
$this->Session->setFlash(__('Es ist ein Fehler aufgetreten. Bitte versuchen Sie es nochmals.', true));
}
}
}
}
}
leider funktioniert diese methode nicht wunschgemäss, es wird immer 'Es ist ein Fehler aufgetreten. Bitte versuchen Sie es nochmals.' ausgegeben und das Passwort wird auch nicht verändert. Merkwürdigerweise funktioniert die Methode aber tadellos, wenn ich im user-Modell die validation-Variable entferne. Woran liegt das? Oder wie muss ich meine set_password-Methode ändern um das gewünschte Ergebnis zu erzielen?!
Danke für Eure Hilfe!!
Hier noch die validation-Variable im user-Modell:
- Code: Alles auswählen
- var $validate = array(
'username' => array(
'minlength' => array(
'rule' => array('minLength', 3),
'message' => 'Der Benutzername muss mindestens drei Zeichen lang sein.'
),
'maxlength' => array(
'rule' => array('maxLength', 20),
'message' => 'Der Benutzername darf maximal zwanzig Zeichen lang sein.'
),
'checkunique' => array(
'rule' => array('checkUnique', 'username'),
'message' => 'Dieser Benutzername ist bereits registriert.',
),
),
'mail' => array(
'email' => array(
'rule' => array('email'),
'message' => 'Bitte geben Sie eine gueltige E-Mail-Adresse ein.'
),
'checkunique' => array(
'rule' => array('checkUnique', 'mail'),
'message' => 'Diese E-Mail-Adresse ist bereits registriert.',
),
),
'name' => array(
'rule' => array('alphanumeric'),
'required' => true,
'message' => 'Bitte geben Sie einen gueltigen Namen ein.'
),
'surname' => array(
'rule' => array('alphanumeric'),
'required' => true,
'message' => 'Bitte geben Sie einen gueltigen Vornamen ein.'
),
/*'street' => array(
'rule' => array('alphanumeric'),
'required' => true,
'message' => 'Bitte geben Sie eine gueltige Strasse ein.'
),*/
'zip' => array(
'rule' => array('numeric'),
'required' => true,
'message' => 'Bitte geben Sie eine gueltige Postleitzahl ein.'
),
'city' => array(
'rule' => array('alphanumeric'),
'required' => true,
'message' => 'Bitte geben Sie eine gueltige Ortschaft ein.'
),
'phone' => array(
'rule' => array('numeric'),
'required' => true,
'message' => 'Bitte geben Sie eine gueltige Telefonnummer ein.'
),
'created' => array('date'),
'modified' => array('date'),
'lastlogin' => array('date'),
'approved' => array('boolean')
);