0 follower

Final Class Yiisoft\Yii\AuthClient\AuthAction

InheritanceYiisoft\Yii\AuthClient\AuthAction
ImplementsPsr\Http\Server\MiddlewareInterface

AuthAction performs authentication via different auth clients.

It supports {@see \Yiisoft\Yii\AuthClient\OpenId}, {@see \Yiisoft\Yii\AuthClient\OAuth1} and {@see \Yiisoft\Yii\AuthClient\OAuth2} client types.

Usage:

class SiteController extends Controller
{
    public function actions()
    {
        return [
            'auth' => [
                'class' => \Yiisoft\Yii\AuthClient\AuthAction::class,
                'successCallback' => [$this, 'successCallback'],
            ],
        ]
    }

    public function successCallback($client)
    {
        $attributes = $client->getUserAttributes();
        // user login or signup comes here
    }
}

Usually authentication via external services is performed inside the popup window. This action handles the redirection and closing of popup window correctly.

See also:

Constants

Hide inherited constants

Constant Value Description Defined By
AUTH_NAME 'auth_displayname' Yiisoft\Yii\AuthClient\AuthAction

Method Details

Hide inherited methods

__construct() public method

public mixed __construct ( Yiisoft\Yii\AuthClient\Collection $clientCollection, \Yiisoft\Aliases\Aliases $aliases, \Yiisoft\View\WebView $view, \Psr\Http\Message\ResponseFactoryInterface $responseFactory )
$clientCollection Yiisoft\Yii\AuthClient\Collection
$aliases \Yiisoft\Aliases\Aliases
$view \Yiisoft\View\WebView
$responseFactory \Psr\Http\Message\ResponseFactoryInterface

                public function __construct(
    /**
     * @var Collection
     * It should point to {@see Collection} instance.
     */
    private readonly Collection $clientCollection,
    private readonly Aliases $aliases,
    private readonly WebView $view,
    private readonly ResponseFactoryInterface $responseFactory
) {
}

            
process() public method

public \Psr\Http\Message\ResponseInterface process ( \Psr\Http\Message\ServerRequestInterface $request, \Psr\Http\Server\RequestHandlerInterface $handler )
$request \Psr\Http\Message\ServerRequestInterface
$handler \Psr\Http\Server\RequestHandlerInterface

                #[\Override]
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
    $clientId = (string)$request->getAttribute($this->clientIdGetParamName);
    if (strlen($clientId) > 0) {
        if (!$this->clientCollection->hasClient($clientId)) {
            return $this->responseFactory->createResponse(Status::NOT_FOUND, "Unknown auth client '{$clientId}'");
        }
        $client = $this->clientCollection->getClient($clientId);
        return $this->auth($client, $request);
    }
    return $this->responseFactory->createResponse(Status::NOT_FOUND);
}

            
withCancelUrl() public method

public Yiisoft\Yii\AuthClient\AuthAction withCancelUrl ( string $url )
$url string

Cancel URL.

                public function withCancelUrl(string $url): self
{
    $new = clone $this;
    $new->cancelUrl = $url;
    return $new;
}

            
withSuccessUrl() public method

public Yiisoft\Yii\AuthClient\AuthAction withSuccessUrl ( string $url )
$url string

Successful URL.

                public function withSuccessUrl(string $url): self
{
    $new = clone $this;
    $new->successUrl = $url;
    return $new;
}