public function rules()
{
$rules = [[['email', 'username'], 'string', 'max' => 255], [['email', 'username'], 'unique'], [['email', 'username'], 'filter', 'filter' => 'trim'], [['email'], 'email'], [['username'], 'match', 'pattern' => '/^\\w+$/u', 'except' => 'social', 'message' => Yii::t('user', '{attribute} can contain only letters, numbers, and "_"')], [['newPassword'], 'string', 'min' => 3], [['newPassword'], 'filter', 'filter' => 'trim'], [['newPassword'], 'required', 'on' => ['register', 'reset']], [['newPasswordConfirm'], 'required', 'on' => ['reset']], [['newPasswordConfirm'], 'compare', 'compareAttribute' => 'newPassword', 'message' => Yii::t('user', 'Passwords do not match')], [['currentPassword'], 'validateCurrentPassword', 'on' => ['account']], [['role_id', 'status'], 'required', 'on' => ['admin']], [['role_id', 'status'], 'integer', 'on' => ['admin']], [['banned_at'], 'integer', 'on' => ['admin']], [['banned_reason'], 'string', 'max' => 255, 'on' => 'admin']];
// add required for currentPassword on account page
// only if $this->password is set (might be null from a social login)
if ($this->password) {
$rules[] = [['currentPassword'], 'required', 'on' => ['account']];
}
// add required rules for email/username depending on module properties
if ($this->module->requireEmail) {
$rules[] = ["email", "required"];
}
if ($this->module->requireUsername) {
$rules[] = ["username", "required"];
}
return $rules;
}