['person','company','customer']], [['verifyCode'], 'captcha','captchaAction'=>'reg/captcha','on'=>['person','company','customer']], [['password_repeat'], 'required','on'=>['person','company','customer','edit_person']], [['password_repeat'], 'password_repeat','on'=>['person','company','customer','edit_person']], [['username'], 'is_username','on'=>['person','company','customer']], [['username'], 'email','on'=>['person','company','customer','edit_person']], [['company'], 'required','on'=>['company']], [['username', 'password','phone','role','name','surname'], 'required','on'=>['edit_person','edit_customer','edit_company']], [['company'], 'required','on'=>['edit_company']], [['sex','body','birth_day','birth_mouth','birth_year'], 'safe','on'=>['edit_person']], [['sex','status','children','body','old_image','birth_day','birth_mouth','birth_year'], 'safe','on'=>['edit_customer']], [['body'], 'safe','on'=>['edit_company']], // [['image'], 'file', 'extensions'=>'jpg, gif, png','skipOnEmpty'=>true,'on'=>['edit_person','edit_customer','edit_company']], ]; } public function attributeLabels() { return [ 'username'=>'Логин (E-mail)', 'password'=>'Пароль', 'password_repeat'=>'Повторить пароль', 'phone'=>'Телефон', 'verifyCode'=>'Код проверки', 'name'=>'Имя', 'surname'=>'Фамилия', 'company'=>'Компания', 'sex'=>'Пол', 'status'=>'Семейное положение', 'children'=>'Дети', 'edu'=>'Образование', 'work'=>'Работа', 'langs'=>'Иностранные языки', 'prava'=>'Водительское удостоверение', 'body'=>'О себе', 'image'=>'Изображения', ]; } public function password_repeat($attribute){ if($this->password != $this->password_repeat) $this->addError('password_repeat','Не правильный повтор пароля.'); } public function is_username($attribute) { if(Customer::find() //->where( ['username' => $this->username],['id!='.$_GET['id']] ) ->where('username = :username', [':username' => $this->username]) ->exists()) $this->addError('username','Такой пользователь уже есть.'); } public function afterSave($insert, $changedAttributes) { parent::afterSave($insert, $changedAttributes); // установка роли пользователя $auth = Yii::$app->authManager; $role = $auth->getRole($this->role); if (!$insert) { $auth->revokeAll($this->id); } $auth->assign($role, $this->id); } public function beforeSave($insert) { $this->date_time = new \yii\db\Expression('NOW()'); /** if($image = UploadedFile::getInstance($this,'image')){ $this->deleteImage($this->old_image); //$this->image = $image; $this->image = time() . '_' . rand(1, 1000) . '.' . $image->extension; $image->saveAs('upload/profile/'.$this->image); $resizeObj = new resize('upload/profile/'.$this->image); $resizeObj -> resizeImage(240, 240, 'crop'); $resizeObj -> saveImage('upload/profile/ico/'.$this->image, 100); }elseif(!empty($this->old_image)) $this->image = $this->old_image; **/ return parent::beforeSave($insert); } public function beforeDelete() { //$this->deleteImage($this->image); return parent::beforeDelete(); } public function deleteImage($file){ if(!empty($file)){ @unlink('upload/profile/'.$file); @unlink('upload/profile/ico/'.$file); // @unlink('upload/fotos/big/'.$file); } } public function getOld(){ if(empty($this->birth_year) || empty($this->birth_mouth) || empty($this->birth_day))return; $birthday = $this->birth_year.'-'.$this->birth_mouth.'-'.$this->birth_day; if($birthday=="0000-00-00")return; $birthday_timestamp = strtotime($birthday); $age = date('Y') - date('Y', $birthday_timestamp); if (date('md', $birthday_timestamp) > date('md')) { $age--; } return $age; } /** * @inheritdoc */ public static function findIdentity($id) { /**Yii::$app->db->createCommand() ->update('user', [ 'time_online' => (time() + (10*60)), ], 'id = '.$id) ->execute(); **/ return static::find()->select(['customer.*','auth_assignment.item_name as role'])->where(['id'=>$id])->join('LEFT JOIN','auth_assignment','auth_assignment.user_id = customer.id')->one(); } /** * @inheritdoc */ public static function findIdentityByAccessToken($token, $type = null) { return static::findOne(['access_token' => $token]); } /** * Finds user by username * * @param string $username * @return static|null */ public static function findByUsername($username) { return static::findOne(['username' => $username]); } /** * @inheritdoc */ public function getId() { return $this->id; } /** * @inheritdoc */ public function getAuthKey() { return $this->authKey; } /** * @inheritdoc */ public function validateAuthKey($authKey) { return $this->authKey === $authKey; } /** * Validates password * * @param string $password password to validate * @return boolean if password provided is valid for current user */ public function validatePassword($password) { return $this->password === $password; } public function getImageProfile(){ return !empty($this->image) ? $this->image : 'user_photo.png'; } public static function findByPasswordResetToken($token) { if (!static::isPasswordResetTokenValid($token)) { return null; } return static::findOne([ 'password_reset_token' => $token, 'status' => self::STATUS_ACTIVE, ]); } /** * Finds out if password reset token is valid * * @param string $token password reset token * @return boolean */ public static function isPasswordResetTokenValid($token) { if (empty($token)) { return false; } $timestamp = (int) substr($token, strrpos($token, '_') + 1); $expire = Yii::$app->params['user.passwordResetTokenExpire']; return $timestamp + $expire >= time(); } /** * Generates new password reset token */ public function generatePasswordResetToken() { $this->password_reset_token = Yii::$app->security->generateRandomString() . '_' . time(); } public static function findByEmail($email) { return static::findOne(['email' => $email, 'status' => self::STATUS_ACTIVE]); } public function getName(){ return $this->username. ' '.$this->surname; } /** * Removes password reset token */ public function removePasswordResetToken() { $this->password_reset_token = null; } }