eluhr / yii2-user-access-token
User access token Yii2
2.0.1
2023-01-24 13:59 UTC
Requires
- php: >=5.5.0
- yiisoft/yii2: ^2.0
README
This extension provides a simple way to authenticate users via a token. It is easily extendable and can be used with any user model.
Installation
composer require eluhr/yii2-user-access-token
Configuration
In your console part of your config file add this:
<?php return [ 'controllerMap' => [ 'migrate' => [ 'migrationPath' => [ '@vendor/eluhr/yii2-user-access-token/src/migrations' ] ] ] ]
Example usage
In your user model you can do this:
<?php namespace app\models; use eluhr\userAccessToken\models\Token; use yii\base\NotSupportedException; use yii\filters\auth\QueryParamAuth; use yii\web\IdentityInterface; class User extends yii\db\ActiveRecord implements IdentityInterface { /** * @param $token * @param string $type * * @throws NotSupportedException * @return IdentityInterface|null */ public static function findIdentityByAccessToken($token, $type = null) { if ($type === QueryParamAuth::class) { $token = Token::findValidToken($token); // Change this to your token model if needed if ($token instanceof Token) { return $token->user; } return null; } return parent::findIdentityByAccessToken($token, $type); } }
In your controller:
<?php namespace app\controllers; use yii\filters\AccessControl; use yii\filters\auth\QueryParamAuth; use yii\web\Controller; class ExampleController extends Controller { public function behaviors() { $behaviors = parent::behaviors(); $behaviors['authenticator'] = [ 'class' => QueryParamAuth::class ]; $behaviors['access'] = [ 'class' => AccessControl::class, 'rules' => [ [ 'actions' => ['index'], 'allow' => true, 'roles' => ['@'] ] ] ]; return $behaviors; } public function actionIndex() { return 'Hello World'; } }