'10', ], [ [ 'birthday', 'username', 'surname', 'phone', 'email', 'password_reset_token', 'city', 'address', ], 'string', 'max' => 255, ], [ [ // 'phone', 'email', ], 'unique' ], [['social_type', 'social_id'], 'safe'], [ [ 'gender', 'auth_key', ], 'string', 'max' => 32, ], ['password', 'string', 'min' => 6,'on'=>[Customer::SCENARIO_CHANGE]], ['password', 'validatePasswordCompare', 'on'=>[Customer::SCENARIO_CHANGE]], ['password_repeat', 'compare', 'compareAttribute'=>'password', 'message'=> Yii::t('app', 'message_match_password'),'on'=>[Customer::SCENARIO_CHANGE] ], ]; } public function validatePasswordCompare($attribute, $params) { if(!empty($this->password) && empty($this->password_repeat)){ $this->addError('password_repeat', \Yii::t('app', 'message_match_password')); } } /** * @inheritdoc */ public function attributeLabels() { return [ 'id' => Yii::t('app', 'id'), 'username' => Yii::t('app', 'Фамилия Имя Очество'), 'surname' => Yii::t('app', 'surname'), 'phone' => Yii::t('app', 'Мобильный телефон'), 'gender' => Yii::t('app', 'Пол'), 'birthday' => Yii::t('app', 'Дата рождения'), 'body' => Yii::t('app', 'body'), 'group_id' => Yii::t('app', 'group_id'), 'email' => Yii::t('app', 'Ваш e-mail'), 'auth_key' => Yii::t('app', 'auth_key'), 'password_reset_token' => Yii::t('app', 'password_reset_token'), 'status' => Yii::t('app', 'status'), 'created_at' => Yii::t('app', 'created_at'), 'updated_at' => Yii::t('app', 'updated_at'), 'city' => Yii::t('app', 'Город'), 'address' => Yii::t('app', 'Адрес'), 'password' => Yii::t('app', 'Пароль'), 'password_repeat' => Yii::t('app', 'Пароль повторно'), ]; } /** * Finds user by email * * @param string $email * * @return static|null */ public static function findByEmail($email) { return static::findOne( [ 'email' => $email, 'status' => self::STATUS_ACTIVE, ] ); } public function loginSocial(){ return Yii::$app->user->login($this, 3600 * 24 * 30); } /** * Get full name * * @return string */ public function getName() { return $this->username . ' ' . $this->surname; } public function afterFind() { parent::afterFind(); $this->birthday = !empty($this->birthday) ? date('d.m.Y',$this->birthday) : ''; } public function beforeSave($insert) { if (parent::beforeSave($insert)) { $this->convertBirthday(); return true; } return false; } public function convertBirthday(){ if(!empty($this->birthday)){ $birthday = new \DateTime($this->birthday); $birthday->format("d.m.Y"); $this->birthday = $birthday->getTimestamp(); } } public function getPassword() { return false; } public static function Social($user, $type) { $customer = static::findOne( [ 'status' => self::STATUS_ACTIVE, 'email'=> $user['email'], 'social_type' => $type ] ); if ($customer == null){ $customer = new Customer(); $customer->email = $user['email']; $customer->username = (isset($user['name'])) ? $user['name'] : $user['email']; $customer->social_id = $user['id']; $customer->social_type = $type; $customer->setPassword($user['id']); $customer->generateAuthKey(); $customer->status = self::STATUS_ACTIVE; return $customer->save() ? $customer : null; }else{ return $customer; } } }