/**
  * Update information
  *
  * @return User|null the saved model or null if saving fails
  */
 public function updateInformation(User $user)
 {
     if (!$this->validate()) {
         return null;
     }
     $user->username = $this->username;
     if ($this->informationUpdated = $user->save()) {
         return $user;
     }
     return null;
 }
 /**
  * Change Password
  *
  * @return User|null the saved model or null if saving fails
  */
 public function updatePassword(\common\models\user\User $user)
 {
     if (!$this->validate()) {
         return null;
     }
     $user->setPassword($this->password);
     $user->generateAuthKey();
     if ($this->passwordUpdated = $user->save()) {
         return $user;
     }
     return null;
 }
Exemple #3
0
 /**
  * Signs user up.
  *
  * @return User|null the saved model or null if saving fails
  */
 public function register($validate = true)
 {
     if ($validate && !$this->validate()) {
         return null;
     }
     $user = new User();
     $user->username = $this->username;
     $user->email = $this->email;
     $user->setPassword($this->password);
     $user->generateAuthKey();
     $user->save();
     return $user;
 }
Exemple #4
0
 /**
  * Creates a new User model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  * @return mixed
  */
 public function actionCreate()
 {
     $model = new User(['scenario' => 'create']);
     if ($model->load(Yii::$app->request->post())) {
         $model->setPassword($model->password);
         //强制入库
         $model->generateAuthKey();
         //强制入库
         if ($model->save()) {
             Yii::$app->getAuthManager()->assign(Yii::$app->getAuthManager()->getRole($model->role_name), $model->id);
             //授权操作
             Yii::$app->getSession()->setFlash('success', Yii::t('common', 'Create Success!'));
             return $this->redirect(['index']);
         } else {
             Yii::$app->getSession()->setFlash('warning', Yii::t('common', 'Create Failure!'));
         }
     }
     return $this->render('create', ['model' => $model]);
 }
 /**
  * Signs user up.
  *
  * @return Admin|null the saved model or null if saving fails
  */
 public function add()
 {
     if ($this->validate()) {
         $user = new Admin();
         $user->username = '******';
         $user->email = $this->email;
         if (!empty($this->nickname)) {
             $user->nickname = $this->nickname;
         }
         if (!empty($this->phone)) {
             $user->phone = $this->phone;
         }
         $user->setPassword($this->password);
         $user->generateAuthKey();
         if ($user->save()) {
             return $user;
         }
     }
     return null;
 }
Exemple #6
0
 /**
  * Signs user up.
  *
  * @return User|null the saved model or null if saving fails
  */
 public function signup()
 {
     if ($this->validate()) {
         $user = new User();
         $user->username = $this->username;
         $user->email = $this->email;
         $user->setPassword($this->password);
         $user->generateAuthKey();
         if ($user->save()) {
             $userExtend = new UserExtend();
             $resultFullPath = $userExtend->defaultUserImage();
             if (!empty($resultFullPath)) {
                 $userExtend->user_id = $user->id;
                 $userExtend->avatar = $resultFullPath['avatar'];
                 $userExtend->image = $resultFullPath['image'];
                 $userExtend->save();
             }
             return $user;
         }
     }
     return null;
 }
Exemple #7
0
 /**
  * Signs user up.
  *
  * @return User|null the saved model or null if saving fails
  */
 public function signup()
 {
     $transaction = Yii::$app->db->beginTransaction();
     if ($this->validate()) {
         $user = new User();
         $user->username = $this->username;
         $user->first_name = $this->first_name;
         $user->last_name = $this->last_name;
         $user->email = $this->email;
         $user->setPassword($this->password);
         $user->generateAuthKey();
         if ($user->save()) {
             $userRole = Yii::$app->authManager->getRole('user');
             Yii::$app->authManager->assign($userRole, $user->id);
             $transaction->commit();
             return $user;
         } else {
             $transaction->rollBack();
         }
     }
     return null;
 }
Exemple #8
0
 public static function add($xml, $source = "")
 {
     $data = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);
     $type = trim($data->MsgType);
     $from_openid = $data->FromUserName;
     $to_openid = $data->ToUserName;
     $date_now = date("Y-m-d H:i:s");
     switch ($type) {
         case "location":
             $content = trim($data->Label);
             break;
         case "voice":
             $content = trim($data->Recognition);
             break;
         case "image":
             $content = trim($data->PicUrl);
             break;
         case "link":
             $content = trim($data->Title);
             break;
         case "shortvideo":
             $content = trim($data->ThumbMediaId);
             break;
         case "event":
             $content = trim($data->Event);
             break;
         default:
             $content = trim($data->Content);
             break;
     }
     $model_wx_history = new WxHistory();
     $model_wx_history->from_openid = $from_openid;
     $model_wx_history->to_openid = $to_openid;
     $model_wx_history->type = $type;
     $model_wx_history->content = $content;
     $model_wx_history->text = $xml;
     $model_wx_history->source = $source;
     $model_wx_history->created_time = $date_now;
     $model_wx_history->save(0);
     if (filter_var($content, FILTER_VALIDATE_URL) !== FALSE) {
         SpiderService::add($content);
     }
     if (in_array($type, ["text"]) && substr($content, 0, 1) == "#") {
         $bind_info = UserOpenidUnionid::findOne(['other_openid' => strval($from_openid)]);
         if (!$bind_info) {
             $unique_name = md5($from_openid);
             $user_info = User::findOne(['unique_name' => $unique_name]);
             if (!$user_info) {
                 $model_user = new User();
                 $model_user->nickname = "微信用户" . substr($from_openid, -10);
                 $model_user->unique_name = $unique_name;
                 $model_user->updated_time = $date_now;
                 $model_user->created_time = $date_now;
                 $model_user->save(0);
                 $user_info = $model_user;
             }
             $model_bind = new UserOpenidUnionid();
             $model_bind->uid = $user_info['uid'];
             $model_bind->openid = $from_openid;
             $model_bind->unionid = '';
             $model_bind->other_openid = $from_openid;
             $model_bind->updated_time = $date_now;
             $model_bind->created_time = $date_now;
             $model_bind->save(0);
         }
         if ($bind_info) {
             $model_message = new UserMessageHistory();
             $model_message->uid = $bind_info['uid'];
             $model_message->type = 1;
             $model_message->content = ltrim($content, "#");
             $model_message->status = 1;
             $model_message->updated_time = $date_now;
             $model_message->created_time = $date_now;
             $model_message->save(0);
         }
     }
 }
 public function actionSign()
 {
     /*初始化用户*/
     $woid = $this->get("woid", '');
     $wx_user_info = ['avatar' => GlobalUrlService::buildStaticUrl("/images/wap/no_avatar.png"), 'nickname' => '匿名'];
     if ($woid) {
         $wx_user_info['nickname'] = "微信用户" . substr($woid, -10);
         $date_now = date("Y-m-d H:i:s");
         $bind_info = UserOpenidUnionid::findOne(['other_openid' => strval($woid)]);
         if (!$bind_info) {
             $unique_name = md5($woid);
             $user_info = User::findOne(['unique_name' => $unique_name]);
             if (!$user_info) {
                 $model_user = new User();
                 $model_user->nickname = "微信用户" . substr($woid, -10);
                 $model_user->unique_name = $unique_name;
                 $model_user->updated_time = $date_now;
                 $model_user->created_time = $date_now;
                 $model_user->save(0);
                 $user_info = $model_user;
             }
             $model_bind = new UserOpenidUnionid();
             $model_bind->uid = $user_info['uid'];
             $model_bind->openid = $woid;
             $model_bind->unionid = '';
             $model_bind->other_openid = $woid;
             $model_bind->updated_time = $date_now;
             $model_bind->created_time = $date_now;
             $model_bind->save(0);
         }
     }
     return $this->render("sign", ["user_info" => $wx_user_info]);
 }
Exemple #10
0
 public function actionToken()
 {
     $this->setWeixinConfig();
     $code = $this->get("code", "");
     $state = $this->get("state", "");
     if (!$code) {
         return $this->goHome();
     }
     $appid = $this->appid;
     $appsecret = $this->appsecret;
     $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" . $appid . "&secret=" . $appsecret . "&code=" . $code . "&grant_type=authorization_code";
     $ret = HttpClient::get($url, []);
     $data = @json_decode($ret, true);
     if (empty($data) || isset($data['errcode'])) {
         return $this->goHome();
     }
     $openid = $data['openid'];
     $sns_user_data = [];
     if ($data['scope'] == "snsapi_userinfo") {
         $url = "https://api.weixin.qq.com/sns/userinfo?access_token=" . $data['access_token'] . "&openid={$openid}&lang=zh_CN";
         $ret = HttpClient::get($url, []);
         $sns_user_data = @json_decode($ret, true);
     }
     /*特殊处理*/
     $state = str_replace("@@", "&", urldecode($state));
     $state = str_replace("@|@", "?", urldecode($state));
     /*微信url特殊参数处理*/
     $state = str_replace("from=groupmessage", "", $state);
     $state = str_replace("isappinstalled=0", "", $state);
     $state = str_replace("connect_redirect=", "", $state);
     $state = rtrim($state, "?");
     $state = rtrim($state, "&");
     /*看看有没有owid:公众号wx opendid*/
     $woid = '';
     $question_mark_idx = stripos($state, "?");
     if ($question_mark_idx !== false) {
         $parse_str = mb_substr($state, $question_mark_idx + 1);
         parse_str($parse_str, $get_params);
         if (isset($get_params['woid'])) {
             $woid = $get_params['woid'];
         }
     }
     $reg_bind = UserOpenidUnionid::findOne(["openid" => $openid]);
     if (!$reg_bind) {
         $date_now = date("Y-m-d H:i:s");
         $unique_name = md5($openid);
         $user_info = User::findOne(['unique_name' => $unique_name]);
         if (!$user_info) {
             $model_user = new User();
             if ($sns_user_data) {
                 $model_user->nickname = $sns_user_data['nickname'];
                 $model_user->avatar = $sns_user_data['headimgurl'];
             } else {
                 $model_user->nickname = "微信用户" . substr($openid, -10);
             }
             $model_user->unique_name = $unique_name;
             $model_user->updated_time = $date_now;
             $model_user->created_time = $date_now;
             $model_user->save(0);
             $user_info = $model_user;
         }
         $model_bind = new UserOpenidUnionid();
         $model_bind->uid = $user_info['uid'];
         $model_bind->openid = $openid;
         $model_bind->unionid = '';
         $model_bind->other_openid = $woid;
         $model_bind->updated_time = $date_now;
         $model_bind->created_time = $date_now;
         $model_bind->save(0);
         $reg_bind = $model_bind;
     } else {
         $user_info = User::findOne(['uid' => $reg_bind['uid']]);
     }
     if ($sns_user_data && (stripos("微信用户", $user_info['nickname'] !== false) || !$user_info['avatar'])) {
         $user_info->nickname = $sns_user_data['nickname'];
         $user_info->avatar = $sns_user_data['headimgurl'];
         $user_info->update(0);
     }
     if ($woid && !$reg_bind['other_openid']) {
         //为了修复以前的数据
         $reg_bind->other_openid = $woid;
         $reg_bind->update(0);
     }
     $this->createLoginStatus($user_info);
     $url = $state ? $state : UrlService::buildWapUrl("/default/index");
     return $this->redirect($url);
 }