Passed
Push — dependabot/npm_and_yarn/string... ( b56eb5...bc569b )
by
unknown
45:46 queued 33s
created

BaseCommand::askPassword()   A

Complexity

Conditions 5
Paths 3

Size

Total Lines 17
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 30

Importance

Changes 0
Metric Value
cc 5
eloc 9
nc 3
nop 0
dl 0
loc 17
ccs 0
cts 10
cp 0
crap 30
rs 9.6111
c 0
b 0
f 0
1
<?php
2
3
namespace Thinktomorrow\Chief\App\Console;
4
5
use Thinktomorrow\Chief\Authorization\Role;
6
use Thinktomorrow\Chief\Users\User;
7
use Illuminate\Console\Command;
8
9
abstract class BaseCommand extends Command
10
{
11
    protected function createUser(string $firstname, string $lastname, string $email, string $password, $roles = [])
12
    {
13
        $user = new User;
14
        $user->firstname = $firstname;
15
        $user->lastname = $lastname;
16
        $user->email = $email;
17
        $user->password = bcrypt($password);
18
        $user->enabled = true;
19
        $user->save();
20
21
        $user->assignRole((array)$roles);
22
    }
23
24
    /**
25
     * @return null|string
26
     * @throws \Exception
27
     */
28
    protected function askPassword()
29
    {
30
        $password = $passwordConfirm = null;
31
        $tries = 0;
32
33
        while (!$password || strlen($password) < 4 || $password != $passwordConfirm) {
34
            if ($tries > 2) {
35
                throw new \Exception('Aborting. Too many failed attempts to set password');
36
            }
37
38
            $password = $this->secret('Password (min. 5 chars)');
39
            $passwordConfirm = $this->secret('Password (confirm)');
40
41
            $tries++;
42
        }
43
44
        return $password;
45
    }
46
}
47