* @copyright (c), Thread */ class ChangePassword extends \yii\base\Model { public $password, $password_old, $password_confirmation; // const FLASH_KEY = 'ChangePassword'; // protected $_password_min_length; /** * */ public function init() { parent::init(); /** * @var $module \frontend\modules\user\User */ $module = Yii::$app->getModule('user'); $this->_password_min_length = $module->password_min_length; } /** * @return array */ public function rules() { return [ [['password', 'password_confirmation', 'password_old'], 'required'], [['password_old'], 'validateOLDPassword'], [['password_confirmation'], 'compare', 'compareAttribute' => 'password',], [['password', 'password_confirmation'], 'string', 'min' => $this->_password_min_length], ]; } /** * @return array */ public function scenarios() { return [ 'passwordChange' => ['password', 'password_confirmation', 'password_old'], ]; } /** * @return array */ public function attributeLabels() { return [ 'password_old' => Yii::t('user', 'Password old'), 'password' => Yii::t('user', 'Password'), 'password_confirmation' => Yii::t('user', 'Password confirmation'), ]; } /** * */ public function validateOLDPassword() { if (!$this->hasErrors()) { $user = User::getUserById(Yii::$app->getUser()->id); if (!$user || !$user->validatePassword($this->password_old)) { $this->addError('password_old', Yii::t('user', 'Incorrect password')); } } } /** * @param bool|true $value */ public function addFlash($value = true) { Yii::$app->getSession()->addFlash(self::FLASH_KEY, $value); } /** * @return mixed */ public function getFlash() { return Yii::$app->getSession()->getFlash(self::FLASH_KEY, ''); } }