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.
		
		
		
		
			
				
					105 lines
				
				2.1 KiB
			
		
		
			
		
	
	
					105 lines
				
				2.1 KiB
			| 
								 
											2 years ago
										 
									 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace app\models;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class User extends \yii\base\BaseObject implements \yii\web\IdentityInterface
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    public $id;
							 | 
						||
| 
								 | 
							
								    public $username;
							 | 
						||
| 
								 | 
							
								    public $password;
							 | 
						||
| 
								 | 
							
								    public $authKey;
							 | 
						||
| 
								 | 
							
								    public $accessToken;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    private static $users = [
							 | 
						||
| 
								 | 
							
								        '100' => [
							 | 
						||
| 
								 | 
							
								            'id' => '100',
							 | 
						||
| 
								 | 
							
								            'username' => 'admin',
							 | 
						||
| 
								 | 
							
								            'password' => 'admin',
							 | 
						||
| 
								 | 
							
								            'authKey' => 'test100key',
							 | 
						||
| 
								 | 
							
								            'accessToken' => '100-token',
							 | 
						||
| 
								 | 
							
								        ],
							 | 
						||
| 
								 | 
							
								        '101' => [
							 | 
						||
| 
								 | 
							
								            'id' => '101',
							 | 
						||
| 
								 | 
							
								            'username' => 'demo',
							 | 
						||
| 
								 | 
							
								            'password' => 'demo',
							 | 
						||
| 
								 | 
							
								            'authKey' => 'test101key',
							 | 
						||
| 
								 | 
							
								            'accessToken' => '101-token',
							 | 
						||
| 
								 | 
							
								        ],
							 | 
						||
| 
								 | 
							
								    ];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * {@inheritdoc}
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public static function findIdentity($id)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        return isset(self::$users[$id]) ? new static(self::$users[$id]) : null;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * {@inheritdoc}
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public static function findIdentityByAccessToken($token, $type = null)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        foreach (self::$users as $user) {
							 | 
						||
| 
								 | 
							
								            if ($user['accessToken'] === $token) {
							 | 
						||
| 
								 | 
							
								                return new static($user);
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return null;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Finds user by username
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @param string $username
							 | 
						||
| 
								 | 
							
								     * @return static|null
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public static function findByUsername($username)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        foreach (self::$users as $user) {
							 | 
						||
| 
								 | 
							
								            if (strcasecmp($user['username'], $username) === 0) {
							 | 
						||
| 
								 | 
							
								                return new static($user);
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return null;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * {@inheritdoc}
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function getId()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        return $this->id;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * {@inheritdoc}
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function getAuthKey()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        return $this->authKey;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * {@inheritdoc}
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function validateAuthKey($authKey)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        return $this->authKey === $authKey;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * 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 === $password;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |