SignupForm::signup()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 19
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 19
rs 9.4285
cc 3
eloc 13
nc 3
nop 1
1
<?php
2
3
namespace yiicod\auth\models;
4
5
use Yii;
6
use yii\base\Model;
7
8
/**
9
 * Signup form
10
 */
11
class SignupForm extends Model
12
{
13
    public $username;
14
    public $email;
15
    public $password;
16
    public $confirm;
17
18
    /**
19
     * @inheritdoc
20
     */
21
    public function rules()
22
    {
23
        $targetClass = Yii::$app->get('auth')->modelMap['user']['class'];
24
25
        return [
26
            ['username', 'filter', 'filter' => 'trim'],
27
            [['username', 'confirm'], 'required'],
28
            [
29
                'username',
30
                'unique',
31
                'targetClass' => $targetClass,
32
                'targetAttribute' => $targetClass::attributesMap()['fieldUsername'],
33
                'message' => 'This username has already been taken.',
34
            ],
35
            [['password'], 'compare', 'compareAttribute' => 'confirm', 'operator' => '==', 'skipOnEmpty' => false],
36
            ['username', 'string', 'min' => 2, 'max' => 255],
37
            ['email', 'filter', 'filter' => 'trim'],
38
            ['email', 'required'],
39
            ['email', 'email'],
40
            [
41
                'email',
42
                'unique',
43
                'targetClass' => $targetClass,
44
                'targetAttribute' => $targetClass::attributesMap()['fieldEmail'],
45
                'message' => 'This email address has already been taken.',
46
            ],
47
            ['password', 'required'],
48
            ['password', 'string', 'min' => 6],
49
        ];
50
    }
51
52
    /**
53
     * Signs user up.
54
     *
55
     * @return User|null the saved model or null if saving fails
56
     */
57
    public function signup($user = null)
58
    {
59
        if ($this->validate()) {
60
            if (null === $user) {
61
                $userClass = Yii::$app->get('auth')->modelMap['user']['class'];
62
                $user = new $userClass();
63
            }
64
            $user->username = $this->username;
65
            $user->email = $this->email;
66
            $user->generatePassword($this->password);
67
            $user->generateAuthKey();
68
            $user->status = 1;
69
            $user->save();
70
71
            return $user;
72
        }
73
74
        return null;
75
    }
76
}
77