119 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace dominion\user;
 | 
						|
 | 
						|
use Yii;
 | 
						|
use yii\base\BaseObject;
 | 
						|
use yii\web\IdentityInterface;
 | 
						|
use yii\filters\RateLimitInterface;
 | 
						|
use \Lcobucci\JWT\Validation\Constraint\SignedWith;
 | 
						|
 | 
						|
class User extends BaseObject implements IdentityInterface , RateLimitInterface
 | 
						|
{
 | 
						|
    public $id;
 | 
						|
    public $username;
 | 
						|
    public $password;
 | 
						|
    public $authKey;
 | 
						|
    public $accessToken;
 | 
						|
    public $role;
 | 
						|
    public $priceType = 0;
 | 
						|
 | 
						|
 | 
						|
 | 
						|
    /**
 | 
						|
     * {@inheritdoc}
 | 
						|
     */
 | 
						|
    public static function findIdentity($id)
 | 
						|
    {
 | 
						|
        return null;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * {@inheritdoc}
 | 
						|
     */
 | 
						|
    public static function findIdentityByAccessToken($token, $type = null)
 | 
						|
    {
 | 
						|
        return new static([
 | 
						|
            'id' =>(string)$token->claims()->get('uid'),
 | 
						|
            'role' =>(string)$token->claims()->get('role'),
 | 
						|
            'priceType' => (int)$token->claims()->get('priceType'),
 | 
						|
        ]);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Finds user by username
 | 
						|
     *
 | 
						|
     * @param string $username
 | 
						|
     * @return static|null
 | 
						|
     */
 | 
						|
    public static function findByUsername($username)
 | 
						|
    {
 | 
						|
        return self::findIdentity((string) $username);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * {@inheritdoc}
 | 
						|
     */
 | 
						|
    public function getId()
 | 
						|
    {
 | 
						|
        return $this->id;
 | 
						|
    }
 | 
						|
 | 
						|
    public function getRole()
 | 
						|
    {
 | 
						|
        return $this->role;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * {@inheritdoc}
 | 
						|
     */
 | 
						|
    public function getAuthKey()
 | 
						|
    {
 | 
						|
        return null;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * {@inheritdoc}
 | 
						|
     */
 | 
						|
    public function validateAuthKey($authKey)
 | 
						|
    {
 | 
						|
        return false;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Validates password
 | 
						|
     *
 | 
						|
     * @param string $password password to validate
 | 
						|
     * @return bool if password provided is valid for current user
 | 
						|
     */
 | 
						|
    public function validatePassword($password)
 | 
						|
    {
 | 
						|
        return $this->password === hash('sha512',$password);
 | 
						|
    }
 | 
						|
 | 
						|
    public function getRateLimit($request, $action)
 | 
						|
    {
 | 
						|
        return [1000, 1]; // $rateLimit requests per second
 | 
						|
}
 | 
						|
 | 
						|
    public function loadAllowance($request, $action)
 | 
						|
    {
 | 
						|
        return [1000, time()];
 | 
						|
}
 | 
						|
 | 
						|
    public function saveAllowance($request, $action, $allowance, $timestamp)
 | 
						|
    {
 | 
						|
 | 
						|
    }
 | 
						|
 | 
						|
    public static function getPriceTypeId()
 | 
						|
    {
 | 
						|
        return isset(Yii::$app->user) ? Yii::$app->user->identity->priceType : 1;
 | 
						|
    }
 | 
						|
 | 
						|
    public static function getAuthMemberId()
 | 
						|
    {
 | 
						|
        return isset(Yii::$app->user) ? Yii::$app->user->identity->id : 0;
 | 
						|
    }
 | 
						|
}
 |