You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					186 lines
				
				4.2 KiB
			
		
		
			
		
	
	
					186 lines
				
				4.2 KiB
			| 
								 
											12 years ago
										 
									 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @link http://www.yiiframework.com/
							 | 
						||
| 
								 | 
							
								 * @copyright Copyright (c) 2008 Yii Software LLC
							 | 
						||
| 
								 | 
							
								 * @license http://www.yiiframework.com/license/
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 
											12 years ago
										 
									 | 
							
								namespace yii\authclient;
							 | 
						||
| 
								 
											12 years ago
										 
									 | 
							
								
							 | 
						||
| 
								 | 
							
								use yii\base\Object;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Token represents OAuth token.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @property array $params token parameters.
							 | 
						||
| 
								 | 
							
								 * @property string $token token value.
							 | 
						||
| 
								 | 
							
								 * @property string $tokenSecret token secret value.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @author Paul Klimov <klimov.paul@gmail.com>
							 | 
						||
| 
								 | 
							
								 * @since 2.0
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 
											12 years ago
										 
									 | 
							
								class OAuthToken extends Object
							 | 
						||
| 
								 
											12 years ago
										 
									 | 
							
								{
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * @var string key in {@link _params} array, which stores token key.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									public $tokenParamKey = 'oauth_token';
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * @var string key in {@link _params} array, which stores token secret key.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									public $tokenSecretParamKey = 'oauth_token_secret';
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * @var string key in {@link _params} array, which stores token expiration duration.
							 | 
						||
| 
								 | 
							
									 * If not set will attempt to fetch its value automatically.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									private $_expireDurationParamKey;
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * @var array token parameters.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									private $_params = [];
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * @var integer object creation timestamp.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									public $createTimestamp;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function init()
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										if ($this->createTimestamp === null) {
							 | 
						||
| 
								 | 
							
											$this->createTimestamp = time();
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * @param string $expireDurationParamKey expire duration param key.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									public function setExpireDurationParamKey($expireDurationParamKey) {
							 | 
						||
| 
								 | 
							
										$this->_expireDurationParamKey = $expireDurationParamKey;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * @return string expire duration param key.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									public function getExpireDurationParamKey() {
							 | 
						||
| 
								 | 
							
										if ($this->_expireDurationParamKey === null) {
							 | 
						||
| 
								 | 
							
											$this->_expireDurationParamKey = $this->defaultExpireDurationParamKey();
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return $this->_expireDurationParamKey;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * @return array
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									public function getParams() {
							 | 
						||
| 
								 | 
							
										return $this->_params;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * @param array $params
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									public function setParams(array $params) {
							 | 
						||
| 
								 | 
							
										$this->_params = $params;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Sets param by name.
							 | 
						||
| 
								 | 
							
									 * @param string $name param name.
							 | 
						||
| 
								 | 
							
									 * @param mixed $value param value,
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									public function setParam($name, $value) {
							 | 
						||
| 
								 | 
							
										$this->_params[$name] = $value;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Returns param by name.
							 | 
						||
| 
								 | 
							
									 * @param string $name param name.
							 | 
						||
| 
								 | 
							
									 * @return mixed param value.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									public function getParam($name) {
							 | 
						||
| 
								 | 
							
										return isset($this->_params[$name]) ? $this->_params[$name] : null;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Sets token value.
							 | 
						||
| 
								 | 
							
									 * @param string $token token value.
							 | 
						||
| 
								 | 
							
									 * @return static self reference.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									public function setToken($token) {
							 | 
						||
| 
								 | 
							
										$this->setParam($this->tokenParamKey, $token);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Returns token value.
							 | 
						||
| 
								 | 
							
									 * @return string token value.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									public function getToken() {
							 | 
						||
| 
								 | 
							
										return $this->getParam($this->tokenParamKey);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Sets the token secret value.
							 | 
						||
| 
								 | 
							
									 * @param string $tokenSecret token secret.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									public function setTokenSecret($tokenSecret) {
							 | 
						||
| 
								 | 
							
										$this->setParam($this->tokenSecretParamKey, $tokenSecret);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Returns the token secret value.
							 | 
						||
| 
								 | 
							
									 * @return string token secret value.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									public function getTokenSecret() {
							 | 
						||
| 
								 | 
							
										return $this->getParam($this->tokenSecretParamKey);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Sets token expire duration.
							 | 
						||
| 
								 | 
							
									 * @param string $expireDuration token expiration duration.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									public function setExpireDuration($expireDuration) {
							 | 
						||
| 
								 | 
							
										$this->setParam($this->getExpireDurationParamKey(), $expireDuration);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Returns the token expiration duration.
							 | 
						||
| 
								 | 
							
									 * @return integer token expiration duration.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									public function getExpireDuration() {
							 | 
						||
| 
								 | 
							
										return $this->getParam($this->getExpireDurationParamKey());
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Fetches default expire duration param key.
							 | 
						||
| 
								 | 
							
									 * @return string expire duration param key.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									protected function defaultExpireDurationParamKey() {
							 | 
						||
| 
								 | 
							
										$expireDurationParamKey = 'expires_in';
							 | 
						||
| 
								 | 
							
										foreach ($this->getParams() as $name => $value) {
							 | 
						||
| 
								 | 
							
											if (strpos($name, 'expir') !== false) {
							 | 
						||
| 
								 | 
							
												$expireDurationParamKey = $name;
							 | 
						||
| 
								 | 
							
												break;
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return $expireDurationParamKey;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Checks if token has expired.
							 | 
						||
| 
								 | 
							
									 * @return boolean is token expired.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									public function getIsExpired() {
							 | 
						||
| 
								 | 
							
										$expirationDuration = $this->getExpireDuration();
							 | 
						||
| 
								 | 
							
										if (empty($expirationDuration)) {
							 | 
						||
| 
								 | 
							
											return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return (time() >= ($this->createTimestamp + $expirationDuration));
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Checks if token is valid.
							 | 
						||
| 
								 | 
							
									 * @return boolean is token valid.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									public function getIsValid() {
							 | 
						||
| 
								 | 
							
										$token = $this->getToken();
							 | 
						||
| 
								 | 
							
										return (!empty($token) && !$this->getIsExpired());
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 |