PHP code example of yii1tech / web-user

1. Go to this page and download the library: Download yii1tech/web-user library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

yii1tech / web-user example snippets




return [
    'components' => [
        'user' => [
            'class' => yii1tech\web\user\WebUser::class,
            'onAfterLogin' => function (CEvent $event) {
                Yii::log('Login User ID=' . $event->sender->getId());
            },
        ],
        // ...
    ],
    // ...
];



return [
    'components' => [
        'user' => [
            'class' => yii1tech\web\user\WebUser::class,
            'onAfterRestore' => function (CEvent $event) {
                $user = User::model()->findByPk($event->sender->getId());
                
                if (empty($user) || $user->is_banned) {
                    $event->sender->logout(false);
                }
            },
        ],
        // ...
    ],
    // ...
];



return [
    'components' => [
        'user' => [
            'class' => yii1tech\web\user\WebUser::class,
            'behaviors' => [
                'modelBehavior' => [
                    'class' => yii1tech\web\user\ActiveRecordModelBehavior::class,
                    'modelClass' => app\models\User::class, // ActiveRecord class to used for model source
                    'attributeToStateMap' => [ // map for WebUser states fill up from ActiveRecord model attributes
                        'username' => '__name', // matches `Yii::app()->user->getName()`
                        'email' => 'email', // matches `Yii::app()->user->getState('email')`
                    ],
                ],
            ],
        ],
        // ...
    ],
    // ...
];



$user = Yii::app()->user->getModel();

var_dump($user->id == Yii::app()->user->getId()); // outputs `true`
var_dump($user->username == Yii::app()->user->getName()); // outputs `true`
var_dump($user->email == Yii::app()->user->getState('email')); // outputs `true`

$user->setAttributes($_POST['User']);
$user->save();



$user = Yii::app()->user->getModel();
if ($user) {
    var_dump(Yii::app()->user->getIsGuest()); // outputs `false`
} else {
    var_dump(Yii::app()->user->getIsGuest()); // outputs `true`
}



return [
    'components' => [
        'user' => [
            'class' => yii1tech\web\user\WebUser::class,
            'behaviors' => [
                'modelBehavior' => [
                    'class' => yii1tech\web\user\ActiveRecordModelBehavior::class,
                    'modelClass' => app\models\User::class,
                    'modelFindCriteria' => [
                        'scopes' => [
                            'activeOnly',
                        ],
                        'condition' => 'is_banned = 0',
                    ],
                ],
            ],
        ],
        // ...
    ],
    // ...
];



$user = User::model()->findByPk(1);

Yii::app()->user->setModel($user);

var_dump(Yii::app()->user->getIsGuest()); // outputs `false`
var_dump($user->id == Yii::app()->user->getId()); // outputs `true`



namespace app\web\controllers;

use app\models\OAuthToken;
use app\models\User;
use CController;
use Yii;
use yii1tech\session\dummy\DummySession;

class ApiController extends CController
{
    public function init()
    {
        parent::init();
        
        // mock session, so it does not send any Cookies to the API client:
        Yii::app()->setComponent('session', new DummySession(), false);
        
        // find OAuth token matching request:
        $oauthToken = OAuthToken::model()->findByPk(Yii::app()->request->getParam('oauth_token'));
        if (!$oauthToken) {
            return;
        }
        
        // find User matching OAuth token:
        $user = User::model()->findByPk($oauthToken->user_id);
        if (!$user) {
            return;
        }
        
        // act as found user:
        Yii::app()->user->setModel($user);
    }
    
    public function filters()
    {
        return [
            'accessControl', // now we can freely use standard "access control" filter and other features
        ];
    }
    
    public function accessRules()
    {
        return [
            // ...
        ];
    }
    
    // ...
}

php composer.phar