public function run()
 {
     require_once Yii::getPathOfAlias('ext') . "/OAuth/sinawb/saetv2.ex.class.php";
     $config = OAuth::getConf('sinawb');
     $sinawb = new SaeTOAuthV2($config['wb_akey'], $config['wb_skey']);
     if (isset($_REQUEST['code'])) {
         $keys = array();
         $keys['code'] = $_REQUEST['code'];
         $keys['redirect_uri'] = $config['callback'];
         try {
             $token = $sinawb->getAccessToken('code', $keys);
         } catch (OAuthException $e) {
             throw new CHttpException(500, 'Error:' . $e->getMessage());
         }
     }
     if ($token) {
         $access_token = Yii::app()->session['access_token'] = $token['access_token'];
         $openid = $token['uid'];
         //设置cookie
         $cookie_name = 'weibojs_' . $openid;
         $cookie = new CHttpCookie($cookie_name, http_build_query($token));
         $cookie->expire = time() + 60 * 60 * 24 * 30;
         //有限期30天
         Yii::app()->request->cookies[$cookie_name] = $cookie;
         //获取用户信息
         $c = new SaeTClientV2(WB_AKEY, WB_SKEY, $access_token);
         $user_info = $c->show_user_by_id($openid);
         //根据ID获取用户等基本信息
         if ($user_info['error']) {
             throw new CHttpException('500', Yii::t('common', 'Login Failed') . '(' . $user_info['error_code'] . ')');
         }
         //查看是否已绑定
         $bind = OAuthSinawb::model()->findByPk($openid);
         //数据
         $data = array('type' => 'sinawb', 'access_token' => $access_token, 'openid' => $openid, 'uid' => $bind ? $bind->uid : 0, 'username' => $user_info['screen_name'], 'avatar' => $user_info['avatar_large']);
         //绑定注册
         $this->controller->bind_register($bind, $data);
     } else {
         $this->controller->message('error', Yii::t('common', 'Login Failed') . '(sinawb_x_0000)', $this->createUrl('user/login'));
     }
 }
Beispiel #2
0
 /**
  * 批量操作
  *
  */
 public function actionBatch()
 {
     if ($this->method() == 'GET') {
         $command = trim($this->_request->getParam('command'));
         $ids = intval($this->_request->getParam('id'));
     } elseif ($this->method() == 'POST') {
         $command = $this->_request->getPost('command');
         $ids = $this->_request->getPost('id');
     } else {
         throw new CHttpException(404, Yii::t('admin', 'Only POST Or GET'));
     }
     empty($ids) && $this->message('error', Yii::t('admin', 'No Select'));
     switch ($command) {
         case 'userLock':
             foreach ((array) $ids as $id) {
                 $userModel = User::model()->findByPk($id);
                 if ($userModel) {
                     $userModel->status = 0;
                     $userModel->save();
                 }
             }
             break;
         case 'userunLock':
             foreach ((array) $ids as $id) {
                 $userModel = User::model()->findByPk($id);
                 if ($userModel) {
                     $userModel->status = 1;
                     $userModel->save();
                 }
             }
             break;
         case 'userUnpass':
             foreach ((array) $ids as $id) {
                 $userModel = User::model()->findByPk($id);
                 if ($userModel) {
                     $userModel->status = -1;
                     $userModel->save();
                 }
             }
             break;
         case 'userDelete':
             foreach ((array) $ids as $id) {
                 $userModel = User::model()->findByPk($id);
                 if ($userModel) {
                     $userModel->delete();
                     //删除绑定用户
                     OAuthQQ::model()->deleteAllByAttributes(array('uid' => $id));
                     OAuthSinawb::model()->deleteAllByAttributes(array('uid' => $id));
                     OAuthRenren::model()->deleteAllByAttributes(array('uid' => $id));
                     OAuthWeixin::model()->deleteAllByAttributes(array('uid' => $id));
                     //删除头像
                     Uploader::deleteFile($userModel->avatar);
                 }
             }
             break;
         case 'groupDelete':
             foreach ((array) $ids as $id) {
                 $groupModel = UserGroup::model()->findByPk($id);
                 if ($groupModel) {
                     $groupModel->delete();
                 }
             }
         default:
             throw new CHttpException(404, Yii::t('admin', 'Error Operation'));
             break;
     }
     $this->message('success', Yii::t('admin', 'Batch Operate Success'), $this->createUrl('index'));
 }