-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathUserManager.php
More file actions
97 lines (81 loc) · 2.33 KB
/
UserManager.php
File metadata and controls
97 lines (81 loc) · 2.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?php
namespace HMS\User;
use HMS\Entities\Role;
use HMS\Entities\User;
use HMS\Auth\PasswordStore;
use Illuminate\Http\Request;
use HMS\Repositories\UserRepository;
use HMS\User\Permissions\RoleManager;
class UserManager
{
/**
* @var UserRepository
*/
private $userRepository;
/**
* @var RoleManager
*/
private $roleManager;
/**
* @var PasswordStore
*/
private $passwordStore;
/**
* UserManager constructor.
* @param UserRepository $userRepository
* @param RoleManager $roleManager
* @param PasswordStore $passwordStore
*/
public function __construct(UserRepository $userRepository,
RoleManager $roleManager, PasswordStore $passwordStore)
{
$this->userRepository = $userRepository;
$this->roleManager = $roleManager;
$this->passwordStore = $passwordStore;
}
/**
* @param User $user
* @param Role $role
*/
public function removeRoleFromUser($user, $role)
{
$this->roleManager->removeUserFromRole($user, $role);
}
/**
* @param string $firstname
* @param string $lastname
* @param string $username
* @param string $email
* @param string $password
* @return User
*/
public function create(string $firstname, string $lastname, string $username, string $email, string $password)
{
$user = new User($firstname, $lastname, $username, $email);
// TODO: maybe consolidate these into a single call via a service?
$this->userRepository->save($user);
$this->passwordStore->add($user->getUsername(), $password);
$this->roleManager->addUserToRoleByName($user, Role::MEMBER_APPROVAL);
return $user;
}
/**
* update the user form a form request.
* @param User $user user to update
* @param Illuminate\Http\Request $request
* @return User
*/
public function updateFromRequest(User $user, Request $request): User
{
if ($request['firstname']) {
$user->setFirstname($request['firstname']);
}
if ($request['lastname']) {
$user->setLastname($request['lastname']);
}
if ($request['email']) {
$user->setEmail($request['email']);
}
$this->userRepository->save($user);
return $user;
}
}