Completed
Push — master ( 0925ba...8b1601 )
by Ryan
02:19
created

UserSeeder::run()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 33
Code Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 33
rs 8.8571
cc 1
eloc 18
nc 1
nop 0
1
<?php namespace Anomaly\UsersModule\User;
2
3
use Anomaly\Streams\Platform\Database\Seeder\Seeder;
4
use Anomaly\UsersModule\Role\Contract\RoleRepositoryInterface;
5
use Anomaly\UsersModule\User\Contract\UserInterface;
6
use Anomaly\UsersModule\User\Contract\UserRepositoryInterface;
7
8
/**
9
 * Class UserSeeder
10
 *
11
 * @link          http://pyrocms.com/
12
 * @author        PyroCMS, Inc. <[email protected]>
13
 * @author        Ryan Thompson <[email protected]>
14
 * @package       Anomaly\UsersModule\User
15
 */
16
class UserSeeder extends Seeder
17
{
18
19
    /**
20
     * The user repository.
21
     *
22
     * @var UserRepositoryInterface
23
     */
24
    protected $users;
25
26
    /**
27
     * The role repository.
28
     *
29
     * @var RoleRepositoryInterface
30
     */
31
    protected $roles;
32
33
    /**
34
     * The activator utility.
35
     *
36
     * @var UserActivator
37
     */
38
    protected $activator;
39
40
    /**
41
     * Create a new UserSeeder instance.
42
     *
43
     * @param UserRepositoryInterface $users
44
     * @param RoleRepositoryInterface $roles
45
     * @param UserActivator           $activator
46
     */
47
    public function __construct(
48
        UserRepositoryInterface $users,
49
        RoleRepositoryInterface $roles,
50
        UserActivator $activator
51
    ) {
52
        $this->users     = $users;
53
        $this->roles     = $roles;
54
        $this->activator = $activator;
55
    }
56
57
    /**
58
     * Run the seeder.
59
     */
60
    public function run()
61
    {
62
        $this->users->truncate();
63
64
        $admin = $this->roles->findBySlug('admin');
65
        $user  = $this->roles->findBySlug('user');
66
67
        /* @var UserInterface $administrator */
68
        $administrator = $this->users->create(
69
            [
70
                'display_name' => 'Administrator',
71
                'email'        => env('ADMIN_EMAIL'),
72
                'username'     => env('ADMIN_USERNAME'),
73
                'password'     => env('ADMIN_PASSWORD')
74
            ]
75
        );
76
77
        /* @var UserInterface $demo */
78
        $demo = $this->users->create(
79
            [
80
                'display_name' => 'Demo User',
81
                'email'        => '[email protected]',
82
                'password'     => 'password',
83
                'username'     => 'demo'
84
            ]
85
        );
86
87
        $demo->roles()->sync([$user->getId()]);
88
        $administrator->roles()->sync([$admin->getId()]);
89
90
        $this->activator->force($demo);
91
        $this->activator->force($administrator);
92
    }
93
}
94