Passed
Push — master ( 50ceb2...ce9491 )
by Angel Fernando Quiroz
13:40 queued 05:22
created

AccessUserFixtures::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 0

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 0
nc 1
nop 2
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
/* For licensing terms, see /license.txt */
6
7
namespace Chamilo\CoreBundle\DataFixtures;
8
9
use Chamilo\CoreBundle\Entity\User;
10
use Chamilo\CoreBundle\Repository\Node\UserRepository;
11
use Chamilo\CoreBundle\Tool\ToolChain;
12
use Doctrine\Bundle\FixturesBundle\Fixture;
13
use Doctrine\Persistence\ObjectManager;
14
15
class AccessUserFixtures extends Fixture
16
{
17
    public const ADMIN_USER_REFERENCE = 'admin';
18
    public const ANON_USER_REFERENCE = 'anon';
19
    public const ACCESS_URL_REFERENCE = 'accessUrl';
20
21
    public function __construct(
22
        private readonly ToolChain $toolChain,
23
        private readonly UserRepository $userRepository
24
    ) {}
25
26
    public function load(ObjectManager $manager): void
27
    {
28
        $timezone = 'Europe\Paris';
29
        $this->toolChain->createTools();
30
31
        // Defined in AccessGroupFixtures.php.
32
        // $group = $this->getReference('GROUP_ADMIN');
33
34
        $admin = (new User())
35
            ->setSkipResourceNode(true)
36
            ->setLastname('Doe')
37
            ->setFirstname('Joe')
38
            ->setUsername('admin')
39
            ->setStatus(1)
40
            ->setPlainPassword('admin')
41
            ->setEmail('[email protected]')
42
            ->setOfficialCode('ADMIN')
43
            ->setCreatorId(1)
44
            ->setTimezone($timezone)
45
            ->addUserAsAdmin()
46
            ->addRole('ROLE_GLOBAL_ADMIN') // Only for the first user
47
            // ->addGroup($group)
48
        ;
49
50
        $manager->persist($admin);
51
52
        $this->userRepository->updateUser($admin);
53
54
        $anon = (new User())
55
            ->setSkipResourceNode(true)
56
            ->setLastname('Joe')
57
            ->setFirstname('Anonymous')
58
            ->setUsername('anon')
59
            ->setStatus(ANONYMOUS)
60
            ->setPlainPassword('anon')
61
            ->setEmail('anonymous@localhost')
62
            ->setOfficialCode('anonymous')
63
            ->setCreatorId(1)
64
            ->setTimezone($timezone)
65
        ;
66
        $manager->persist($anon);
67
68
        $fallbackUser = new User();
69
        $fallbackUser
70
            ->setSkipResourceNode(true)
71
            ->setUsername('fallback_user')
72
            ->setEmail('[email protected]')
73
            ->setPlainPassword('fallback_user')
74
            ->setStatus(User::ROLE_FALLBACK)
75
            ->setLastname('Fallback')
76
            ->setFirstname('User')
77
            ->setCreatorId(1)
78
            ->setOfficialCode('FALLBACK')
79
            ->setAuthSource(PLATFORM_AUTH_SOURCE)
80
            ->setPhone('0000000000')
81
            ->setTimezone($timezone)
82
            ->setActive(USER_SOFT_DELETED)
83
        ;
84
        $manager->persist($fallbackUser);
85
86
        $manager->flush();
87
88
        $this->userRepository->addUserToResourceNode($admin->getId(), $admin->getId());
89
        $this->userRepository->addUserToResourceNode($anon->getId(), $admin->getId());
90
        $this->userRepository->addUserToResourceNode($fallbackUser->getId(), $admin->getId());
91
92
        $manager->flush();
93
94
        $this->addReference(self::ADMIN_USER_REFERENCE, $admin);
95
        $this->addReference(self::ANON_USER_REFERENCE, $anon);
96
    }
97
}
98