mirror of
https://github.com/crmeb/CRMEB.git
synced 2026-02-12 18:35:37 +00:00
200 lines
4.3 KiB
PHP
200 lines
4.3 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of the overtrue/wechat.
|
|
*
|
|
* (c) overtrue <i@overtrue.me>
|
|
*
|
|
* This source file is subject to the MIT license that is bundled
|
|
* with this source code in the file LICENSE.
|
|
*/
|
|
|
|
/**
|
|
* Authorizer.php.
|
|
*
|
|
* Part of Overtrue\WeChat.
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*
|
|
* @author lixiao <leonlx126@gmail.com>
|
|
* @author mingyoung <mingyoungcheung@gmail.com>
|
|
* @copyright 2016
|
|
*
|
|
* @see https://github.com/overtrue
|
|
* @see http://overtrue.me
|
|
*/
|
|
|
|
namespace EasyWeChat\OpenPlatform;
|
|
|
|
use Doctrine\Common\Cache\Cache;
|
|
use EasyWeChat\Core\Exception;
|
|
use EasyWeChat\OpenPlatform\Api\BaseApi;
|
|
|
|
class Authorizer
|
|
{
|
|
const CACHE_KEY_ACCESS_TOKEN = 'easywechat.open_platform.authorizer_access_token';
|
|
const CACHE_KEY_REFRESH_TOKEN = 'easywechat.open_platform.authorizer_refresh_token';
|
|
|
|
/**
|
|
* Cache.
|
|
*
|
|
* @var \Doctrine\Common\Cache\Cache
|
|
*/
|
|
protected $cache;
|
|
|
|
/**
|
|
* Base API.
|
|
*
|
|
* @var \EasyWeChat\OpenPlatform\Api\BaseApi
|
|
*/
|
|
protected $api;
|
|
|
|
/**
|
|
* Authorizer AppId.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $appId;
|
|
|
|
/**
|
|
* OpenPlatform AppId.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $openPlatformAppId;
|
|
|
|
/**
|
|
* Authorizer Constructor.
|
|
*
|
|
* @param \EasyWeChat\OpenPlatform\Api\BaseApi $api
|
|
* @param string $openPlatformAppId OpenPlatform AppId
|
|
* @param \Doctrine\Common\Cache\Cache $cache
|
|
*/
|
|
public function __construct(BaseApi $api, $openPlatformAppId, Cache $cache)
|
|
{
|
|
$this->api = $api;
|
|
$this->openPlatformAppId = $openPlatformAppId;
|
|
$this->cache = $cache;
|
|
}
|
|
|
|
/**
|
|
* Gets the base api.
|
|
*
|
|
* @return \EasyWeChat\OpenPlatform\Api\BaseApi
|
|
*/
|
|
public function getApi()
|
|
{
|
|
return $this->api;
|
|
}
|
|
|
|
/**
|
|
* Sets the authorizer app id.
|
|
*
|
|
* @param string $appId
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function setAppId($appId)
|
|
{
|
|
$this->appId = $appId;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Gets the authorizer app id, or throws if not found.
|
|
*
|
|
* @return string
|
|
*
|
|
* @throws \EasyWeChat\Core\Exception
|
|
*/
|
|
public function getAppId()
|
|
{
|
|
if (!$this->appId) {
|
|
throw new Exception(
|
|
'Authorizer App Id is not present, you may not make the authorizer yet.'
|
|
);
|
|
}
|
|
|
|
return $this->appId;
|
|
}
|
|
|
|
/**
|
|
* Saves the authorizer access token in cache.
|
|
*
|
|
* @param string $token
|
|
* @param int $expires
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function setAccessToken($token, $expires = 7200)
|
|
{
|
|
$this->cache->save($this->getAccessTokenCacheKey(), $token, $expires);
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Gets the authorizer access token.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getAccessToken()
|
|
{
|
|
return $this->cache->fetch($this->getAccessTokenCacheKey());
|
|
}
|
|
|
|
/**
|
|
* Saves the authorizer refresh token in cache.
|
|
*
|
|
* @param string $refreshToken
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function setRefreshToken($refreshToken)
|
|
{
|
|
$this->cache->save($this->getRefreshTokenCacheKey(), $refreshToken);
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Gets the authorizer refresh token.
|
|
*
|
|
* @return string
|
|
*
|
|
* @throws \EasyWeChat\Core\Exception when refresh token is not present
|
|
*/
|
|
public function getRefreshToken()
|
|
{
|
|
if ($token = $this->cache->fetch($this->getRefreshTokenCacheKey())) {
|
|
return $token;
|
|
}
|
|
|
|
throw new Exception(
|
|
'Authorizer Refresh Token is not present, you may not make the authorizer yet.'
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Gets the authorizer access token cache key.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getAccessTokenCacheKey()
|
|
{
|
|
return self::CACHE_KEY_ACCESS_TOKEN.$this->appId.$this->getAppId();
|
|
}
|
|
|
|
/**
|
|
* Gets the authorizer refresh token cache key.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getRefreshTokenCacheKey()
|
|
{
|
|
return self::CACHE_KEY_REFRESH_TOKEN.$this->appId.$this->getAppId();
|
|
}
|
|
}
|