| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 | <?phpnamespace KIF\Core;use Cas\Module\Passport;use KIF\Data\ResultWrapper;use KIF\String\String;/** *  * 继承自Controller,封装了微信用户登录状态、用户信息等一些方法 * @author lishumingoo@gmail.com */class WXController extends \KIF\Core\Controller {		/**	 * 	 * 判断是否登录	 * @return boolean	 */	public function isLogin() {		$user =  self::getUser();		if (!$user) {			return false;		}				if ($user['loginType'] == Passport::LOGIN_TYPE_NOT_AUTH) {			return false;		}				return true;	}		/**	 * 	 * 获取用户id	 * @return boolean | int	 */	public function getUid() {		$user = $this->getUser();		if (!$user) {			return false;		}				return $user['uid'];	}		/**	 * 	 * 获取用户登陆类型	 * 授权、未授权登陆	 * @return boolean | int Passport::LOGIN_TYPE_NOT_AUTH Passport::LOGIN_TYPE_HAS_AUTH	 */	public function getLoginType() {		$user = $this->getUser();		if (!$user) {			return false;		}				return $user['loginType'];	}		/**	 * 	 * 获取登陆用户openid	 * @return boolean | string	 */	public function getOpenid() {		$user = $this->getUser();		if (!$user) {			return false;		}				return $user['openid'];	}		/**	 * 	 * 获取用户微信昵称	 * @return boolean | string	 */	public function getNickname() {		$user = $this->getUser();		if (!$user) {			return false;		}				return $user['nickname'];	}		/**	 * 	 * 获取用户微信头像	 * @return boolean | string	 */	public function getHeadimgurl() {		$user = $this->getUser();		if (!$user) {			return false;		}				return $user['headimgurl'];	}		/**	 * 	 * 从Cookie中获取用户的登陆信息	 * @return boolean | array	 */	public function getUser() {		static $user = null;		if ($user) {			return $user;		}				$objPassport = new Passport();		$tmpResult = $objPassport->getLoginInfo();		if ($tmpResult->isSuccess()) {			$user = $tmpResult->getData();		}				return $user;	}		/**	 * 判断登陆状态是否满足活动要求,满足时返回true,不满足返回授权地址	 * @param Boolean $isAuth 是否需要授权。true时需要loginType = Passport::LOGIN_TYPE_HAS_AUTH; false时loginType至少属于Passport::LOGIN_TYPE_NOT_AUTH;	 * @return ResultWrapper success 满足条件; fail 不满足条件,需要通过返回的授权url进行授权	 */	public function checkLoginStatus($isAuth = false, $from) {		$authUrl = Request::schemeDomain() . '/connect/';				if (!$isAuth) {			if (!self::getUser()) {				$state = 'base';			}		} else {			if (!self::isLogin()) {				$state = 'userinfo';			}		}				if ($state) {			return ResultWrapper::fail(String::jointUrl($authUrl, array('from' => $from, 'state' => $state)));		}				return ResultWrapper::success();	}		public function __construct() {		if (self::isLogin()) {			define('IS_LOGIN', 1);			define('UID', self::getUid());			define('NICKNAME', self::getNickname());			define('AVATAR', self::getHeadimgurl());		} else {// 			$tmpResult = self::checkLoginStatus(false, Request::url());// 			if (!$tmpResult->isSuccess()) {// 				self::redirect($tmpResult->getData());// 			}						define('IS_LOGIN', 0);		}	}		public function run() {		$action = $this->action;		$this->$action();	}}
 |