User::className(), 'targetAttribute' => 'email'], // ['username' ,'unique', 'targetClass' => User::className(), 'targetAttribute' => 'username'], [['password_plain' ,'password_repeat'] ,'string','min' =>6 ], [['password_repeat'] ,'validatePasswordRepeat' ], [['username'] ,'validateUsername' ], [['email'] ,'validateEmail' ], ['selected_accounts',function ($attribute, $params) { if (!is_array($this->$attribute)) { $this->addError($attribute, 'Invalid array'); } } ], ['selected_trainers',function ($attribute, $params) { if (!is_array($this->$attribute)) { $this->addError($attribute, 'Invalid array'); } } ], [['role'], 'required'], [['role'], 'string', 'max' => 20], ['status', 'default', 'value' => self::STATUS_ACTIVE], ['status', 'in', 'range' => [self::STATUS_ACTIVE, self::STATUS_DELETED]], ]; } public function validateEmail($attribute, $params){ /** @var User $user */ $user = User::find() ->andWhere(['email' => $this->email])->one(); if (isset($user)){ if ( $user->id != $this->id ){ $this->addError($attribute,'Az email cím már használatban van!'); } } } public function validateUsername($attribute, $params){ /** @var User $user */ $user = User::find() ->andWhere(['username' => $this->username])->one(); if (isset($user)){ if ( $user->id != $this->id ){ $this->addError($attribute,'A felhasználónév már használatban van!'); } } } /** * @formatter:on */ public function validatePasswordRepeat($attribute, $params) { if (! $this->hasErrors ()) { if ( !empty($this->password_plain) || !empty($this->password_repeat) ){ if ($this->password_plain != $this->password_repeat) { $this->addError ( $attribute, Yii::t ( 'app', 'Jelszó és jelszó újra nem egyezik!' ) ); } } } } public function attributeLabels() { return [ 'status' => 'Státusz', 'email' => 'E-mail', 'username' => 'Felhasználónév', 'created_at' => 'Létrehozás dátuma', 'password_plain' => Yii::t ( 'app', 'Jelszó' ), 'password_repeat' => Yii::t ( 'app', 'Jelszó újra' ) ] ; } public function beforeSave($insert) { if (parent::beforeSave ( $insert )) { if (! $insert) { if ( !empty( $this->password_plain ) ) { $this->setPassword($this->password_plain); return true; } } return true; } else { return false; } } public function afterSave($insert, $changedAttributes){ parent::afterSave($insert, $changedAttributes); $am = Yii::$app->authManager; $am->revokeAll($this->id); $role = $am->getRole($this->role); Yii::$app->authManager->assign($role, $this->id); } }