public function beforeSave($insert) { if (parent::beforeSave($insert)) { if($this->isNewRecord) { $this->status = self::DEFAULT_STATUS; $this->generateAuthKey(); $this->setPassword($this->PasswordHash); $this->RulesAccept=1; return true; } else { $this->setPassword($this->PasswordHash); return true; } } }
Tutaj sprawdzam czy jest to nowy user czy tylko aktualizacja. Ale to nei działa bo za każdym razem hasło się nadpisuje. Pomyślałem, że stworzę input który zawsze będzie pusty:
<label class="control-label"> <?= Yii::t('app', 'Hasło')?> </label> <?= $form->field($model, 'PasswordHash')->passwordInput(['placeholder' => Yii::t('app', 'Utwórz hasło'), 'value' => ''])->label('') ?>
No i chciałem napisać coś, żeby sprawdzić, czy ktoś aktualizując dane usera wpisał nowe hasło czy nie. Jeśli input jest pusty tzn, że nie chcę zapisywać hasła i w bazie to zahaszowane hasło ma się nie zmienić ale jeśli ktoś uzupełnił ten iput to ma zahaszować podane hasło:
public function beforeSave($insert) { if (parent::beforeSave($insert)) { if($this->isNewRecord) { $this->status = self::DEFAULT_STATUS; $this->generateAuthKey(); $this->setPassword($this->PasswordHash); $this->RulesAccept=1; return true; } else { $this->setPassword($this->PasswordHash); return true; }return false } } }
Ale niestety to nie działa. Czy jest jakiś sposób na to żeby hasło sie nie nadpisywało? Nie mam już pomysłu.