AdminCreator::create()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 20
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 7
Bugs 0 Features 5
Metric Value
c 7
b 0
f 5
dl 0
loc 20
ccs 0
cts 18
cp 0
rs 9.4285
cc 2
eloc 16
nc 2
nop 4
crap 6
1
<?php
2
namespace AppBundle\Services;
3
4
use AppBundle\Entity\User;
5
use Symfony\Bridge\Doctrine\RegistryInterface;
6
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
7
8
/**
9
 * Class AdminCreator
10
 * @package AppBundle\Services
11
 */
12
class AdminCreator
13
{
14
    /**
15
     * @var RegistryInterface
16
     */
17
    private $doctrine;
18
    /**
19
     * @var UserPasswordEncoderInterface
20
     */
21
    private $userPasswordEncoder;
22
23
    /**
24
     * @param RegistryInterface $doctrine
25
     * @param UserPasswordEncoderInterface $userPasswordEncoder
26
     */
27
    public function __construct(RegistryInterface $doctrine, UserPasswordEncoderInterface $userPasswordEncoder)
28
    {
29
        $this->doctrine = $doctrine;
30
        $this->userPasswordEncoder = $userPasswordEncoder;
31
    }
32
33
    /**
34
     * @param $email
35
     * @param $password
36
     * @param $firstName
37
     * @param $lastName
38
     */
39
    public function create($email, $password, $firstName, $lastName)
40
    {
41
        $role = User::ROLE_ADMIN;
42
43
        $em = $this->doctrine->getManager();
44
        $user = $em->getRepository('AppBundle:User')->findBy(['email' => $email]);
45
        if (!$user)
46
            $user = new User();
47
        else $user = $user[0];
48
49
        $pass = $this->userPasswordEncoder->encodePassword($user, $password);
50
        $user->setEmail($email);
51
        $user->setFirstName($firstName);
52
        $user->setLastName($lastName);
53
        $user->setPassword($pass);
54
        $user->setRole($role);
55
        $user->setIsActive(true);
56
        $em->persist($user);
57
        $em->flush();
58
    }
59
}