Issues (34)

src/actions/AuthorizeAction.php (1 issue)

1
<?php
2
3
namespace roaresearch\yii2\oauth2server\actions;
4
5
use roaresearch\yii2\oauth2server\{
6
    models\AuthForm,
7
    Module as OAuth2Module
8
};
9
use Yii;
10
11
class AuthorizeAction extends \yii\base\Action
12
{
13
    public string|array $loginUri = ['/site/login'];
14
15
    public string $modelClass = AuthForm::class;
16
17
    public string $viewRoute = '@roaresearch/yii2/oauth2server/views/authorize';
18
19
    public ?string $modelName = '';
20
21
    public string|OAuth2Module $oauth2Module = 'oauth2';
22
23
    public function run()
24
    {
25
        return Yii::$app->user->getIsGuest()
26
            ? $this->loginRedirect()
27
            : $this->handle();
28
    }
29
30
    protected function handle()
31
    {
32
        $model = $this->createModel();
33
        $req = Yii::$app->request;
34
        $model->load($req->get(), '');
35
36
        if (is_string($this->oauth2Module)) {
37
            $this->oauth2Module = Yii::$app->getModule($this->oauth2Module);
38
            $this->oauth2Module->initOauth2Server();
39
        }
40
41
        if (
42
            $model->load($req->post(), $this->modelName)
43
            && $model->validate()
44
        ) {
45
            $resp = $this->oauth2Module->handleAuthorizeRequest(
46
                $model->authorized,
47
                Yii::$app->user->getId()
48
            );
49
50
            return $resp->isRedirection()
51
                ? $this->controller->redirect(
52
                    $resp->getHttpHeader('Location'),
53
                    $resp->getStatusCode(),
54
                )
55
                : $resp->send();
56
        }
57
58
        return $this->render($model);
59
    }
60
61
    protected function loginRedirect()
62
    {
63
        return $this->controller->redirect($this->loginUri);
64
    }
65
66
    protected function createModel(): AuthForm
67
    {
68
        return new ($this->modelClass)();
0 ignored issues
show
A parse error occurred: Syntax error, unexpected '(' on line 68 at column 19
Loading history...
69
    }
70
71
    protected function render(AuthForm $model)
72
    {
73
        return $this->controller->render($this->viewRoute, ['model' => $model]);
74
    }
75
}
76