/** * 写入数据 * @param int $user_id * @param string $pwd */ public static function add($user_id, $pwd) { $model = new UserPassword(); $model->pwd = self::__encode($pwd); $model->user_id = $user_id; $model->update_time = time(); $model->insert(); return $model->id; }
public function actionSettings() { $friends_category = ['1' => 'family', '2' => 'collega', '3' => 'other']; $privacy_settings = User::getPrivacyInformation(Yii::$app->user->getId()); $privacy_text = ['birth' => Yii::t('yii', 'Дата рождения'), 'education' => Yii::t('yii', 'Образование'), 'work' => Yii::t('yii', 'Работа'), 'about' => Yii::t('yii', 'О себе'), 'email' => 'Email', 'address' => Yii::t('yii', 'Адрес'), 'tel' => Yii::t('yii', 'Телефон'), 'site' => Yii::t('yii', 'Сайт'), 'soc' => Yii::t('yii', 'Соц. сети')]; $this->redirectOnHomepageIfGuest($user, $isMyProfile); $user_id = Yii::$app->user->getId(); $model = User::findOne($user_id); $model->scenario = 'settings'; $password_model = UserPassword::findOne($user_id); $password_model->scenario = 'change_password'; // Очищаємо телефони якщо вони = 0 User::emptyPhone($model->telephone_1, $model->telephone_2); // Завантаження зображень $image = new UploadImage(); $countries = User::getAllCountries(explode('-', Yii::$app->language)[0]); // Вивід помилок Ajax валідації if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) { Yii::$app->response->format = Response::FORMAT_JSON; return ActiveForm::validate($model); } $folder = "avatar"; $x1_avatar = $_POST['User']['x1_avatar']; $y1_avatar = $_POST['User']['y1_avatar']; $crop_box_size = $_POST['User']['crop_box_size']; $current_photo = true; // Зміна паролю if ($password_model->load(Yii::$app->request->post())) { if ($password_model->validate()) { $password_model->setPassword($password_model->new_password); $responce['status'] = $password_model->save(false); } else { $responce['status'] = false; $responce['errors'] = $password_model->getErrors(); } return json_encode($responce); } // Завантаження зображення if (Yii::$app->request->post() && $model->validate()) { $image->file = UploadedFile::getInstance($image, 'file'); if ($image->file && $image->validate()) { // Видаляємо аватарку, якщо користувач її змінює if ($model->avatar != "" && $model->avatar != "no_user_ua" && $model->avatar != "no_user_ru" && $model->avatar != "no_user_en") { @unlink("img/avatar/" . $model->avatar); } $src = 'user_' . $user_id . '.' . $image->file->extension; $image->saveImage($src, $folder, $x1_avatar, $y1_avatar, $crop_box_size); $model->avatar = $src; $current_photo = false; } } // Зберігаємо дані в БД if ($model->load(\Yii::$app->request->post()) && $model->validate()) { // Обрізаємо існуючу аватарку if ($crop_box_size !== "" && $current_photo) { $image->saveImage($model->avatar, $folder, $x1_avatar, $y1_avatar, $crop_box_size); } // Телефон в правильний формат $model->changePhone(); $model->changePhonePosition(); $model->correctSite(); $model->rating += User::getRatingByInfo($model->oldAttributes, $model->attributes); $model->save(); \Yii::$app->getSession()->setFlash('notify', 'Успішно збережено!'); return $this->redirect('/id' . Yii::$app->user->getId()); } return $this->render('settings', ['model' => $model, 'password_model' => $password_model, 'image' => $image, 'countries' => $countries, 'friends_category' => $friends_category, 'privacy_settings' => $privacy_settings, 'privacy_text' => $privacy_text]); }
/** * 修改密码,需要登录 */ public function actionEditPwd() { $response = Yii::$app->response; $response->format = \yii\web\Response::FORMAT_JSON; $request = Yii::$app->request; $this_path = $this->modules_name . "/" . lcfirst($this->class_name) . "/" . lcfirst(str_replace('action', "", __FUNCTION__)); $this_allow_version = "1.1"; //获取参数,和其他的分页的一样 $param_os = (int) $request->post("os"); //渠道 $param_new_pwd = $request->post("new_pwd"); //新密码 $param_old_pwd = $request->post("old_pwd"); //新密码 //获取token $headers = $request->headers; $header_token = $headers->get('Token') ? $headers->get('Token') : $request->post("token"); //加密之后的设备号,做到兼容post的方式 //验证参数是不是有空的 $check_null = Validators::validateAllNull([$param_os, $header_token]); if ($check_null === FALSE) { //错误信息,参数不全 return $response->data = Error::errorJson($this_path, 1001); } //解密token if ($header_token == '233' && (YII_ENV_LOCAL == 'local' || YII_ENV_DEV)) { $uid = 1046; } else { $token_decode = RsaDecode::clientTokenToArray($header_token); if ($token_decode === FALSE) { //返回错误信息 return $response->data = Error::errorJson($this_path, 9003); } //验证token $check_user_token = TokenUser::check($token_decode['uid'], $token_decode['deviceid'], $token_decode['logintime']); if ($check_user_token !== "0") { return $response->data = Error::errorJson($this_path, $check_user_token); } $uid = $token_decode['uid']; } $user_id = UserAccount::getUserId($uid); //测试数据 18312376990 123123 $decode_old_pwd = RsaDecode::rsa_decode($param_old_pwd); $decode_new_pwd = RsaDecode::rsa_decode($param_new_pwd); //判断是不是有手机号注册 $types = UserEmblem::findAllWay($user_id); if (!in_array(2, $types)) { //返回错误信息 return $response->data = Error::errorJson($this_path, 4005); } //判断旧密码 if (!UserPassword::check($user_id, $decode_old_pwd)) { return $response->data = Error::errorJson($this_path, 4006); } //修改密码 $update = UserPassword::changePwd($user_id, $decode_new_pwd); if (!$update) { //修改密码错误 return $response->data = Error::errorJson($this_path, 4007); } //返回对应的结果 $return_json = ['request' => $this_path, 'info' => ['user_info' => App::getUserProfile($user_id)], 'version' => $this_allow_version, 'error_code' => 0, 'error' => ""]; //接口访问记录 CensusApi::add($user_id, $this_path); return $response->data = $return_json; }