RequestPasswordResetAction::run()   B
last analyzed

Complexity

Conditions 4
Paths 4

Size

Total Lines 23
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 23
rs 8.7972
cc 4
eloc 13
nc 4
nop 0
1
<?php
2
3
namespace yiicod\auth\actions\webUser;
4
5
use Yii;
6
use yii\base\Action;
7
use yii\base\Event;
8
use yiicod\auth\events\RequestPasswordResetEvent;
9
10
class RequestPasswordResetAction extends Action
11
{
12
    const EVENT_AFTER_REQUEST_PASSWORD_RESET = 'afterRequestPasswordReset';
13
    const EVENT_BEFORE_REQUEST_PASSWORD_RESET = 'beforeRequestPasswordReset';
14
    const EVENT_ERROR_REQUEST_PASSWORD_RESET = 'errorRequestPasswordReset';
15
16
    public $view = '@yiicod/yii2-auth/views/webUser/requestPasswordResetToken';
17
18
    /**
19
     * Model scenario
20
     *
21
     * @var
22
     */
23
    public $scenario;
24
25
    public function run()
26
    {
27
        $passwordResetRequestFormClass = Yii::$app->get('auth')->modelMap['passwordResetRequestForm']['class'];
28
        $model = new $passwordResetRequestFormClass($this->scenario);
29
30
        $isLoad = $model->load(Yii::$app->request->post());
31
32
        Event::trigger(self::class, static::EVENT_BEFORE_REQUEST_PASSWORD_RESET, new RequestPasswordResetEvent($this, $model, ['sender' => $this]));
33
34
        if ($isLoad) {
35
            if ($model->validate()) {
36
                if ($model->resetPassword()) {
37
                    Event::trigger(self::class, static::EVENT_AFTER_REQUEST_PASSWORD_RESET, new RequestPasswordResetEvent($this, $model, ['sender' => $this]));
38
                } else {
39
                    Event::trigger(self::class, static::EVENT_ERROR_REQUEST_PASSWORD_RESET, new RequestPasswordResetEvent($this, $model, ['sender' => $this]));
40
                }
41
            }
42
        }
43
44
        return $this->controller->render($this->view, [
45
            'model' => $model,
46
        ]);
47
    }
48
}
49