1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
namespace SumoCoders\FrameworkMultiUserBundle\Controller; |
4
|
|
|
|
5
|
|
|
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; |
6
|
|
|
use SumoCoders\FrameworkMultiUserBundle\Command\ResetPassword; |
7
|
|
|
use SumoCoders\FrameworkMultiUserBundle\Command\RequestPasswordReset; |
8
|
|
|
use SumoCoders\FrameworkMultiUserBundle\Exception\InvalidPasswordConfirmationException; |
9
|
|
|
use SumoCoders\FrameworkMultiUserBundle\Form\ChangePassword; |
10
|
|
|
use SumoCoders\FrameworkMultiUserBundle\Form\ChangePasswordType; |
11
|
|
|
use SumoCoders\FrameworkMultiUserBundle\Form\RequestPassword; |
12
|
|
|
use SumoCoders\FrameworkMultiUserBundle\Form\RequestPasswordType; |
13
|
|
|
use Symfony\Bundle\FrameworkBundle\Controller\Controller; |
14
|
|
|
use Symfony\Component\HttpFoundation\RedirectResponse; |
15
|
|
|
use Symfony\Component\HttpFoundation\Request; |
16
|
|
|
|
17
|
|
|
class PasswordResetController extends Controller |
18
|
|
|
{ |
19
|
|
|
/** |
20
|
|
|
* @param Request $request |
21
|
|
|
* |
22
|
|
|
* @Template() |
23
|
|
|
* |
24
|
|
|
* @return array|RedirectResponse |
25
|
|
|
*/ |
26
|
|
|
public function requestAction(Request $request) |
27
|
|
|
{ |
28
|
|
|
$userReposioryCollection = $this->container->get('multi_user.user_repository.collection'); |
29
|
|
|
$requestPassword = new RequestPassword($userReposioryCollection); |
30
|
|
|
$form = $this->createForm(RequestPasswordType::class, $requestPassword); |
31
|
|
|
|
32
|
|
|
$form->handleRequest($request); |
33
|
|
|
|
34
|
|
|
if ($form->isSubmitted() && $form->isValid()) { |
35
|
|
|
$command = new RequestPasswordReset($requestPassword->getUser()); |
36
|
|
|
$handler = $this->container->get('multi_user.handler.request_password'); |
37
|
|
|
$handler->handle($command); |
38
|
|
|
} |
39
|
|
|
|
40
|
|
|
return |
41
|
|
|
[ |
42
|
|
|
'form' => $form->createView(), |
43
|
|
|
]; |
44
|
|
|
} |
45
|
|
|
|
46
|
|
|
/** |
47
|
|
|
* @param Request $request |
48
|
|
|
* |
49
|
|
|
* @Template() |
50
|
|
|
* |
51
|
|
|
* @throws InvalidPasswordConfirmationException |
52
|
|
|
* |
53
|
|
|
* @return array|RedirectResponse |
54
|
|
|
*/ |
55
|
|
|
public function resetAction(Request $request, $token) |
56
|
|
|
{ |
57
|
|
|
$userReposioryCollection = $this->container->get('multi_user.user_repository.collection'); |
58
|
|
|
$user = $userReposioryCollection->findUserByToken($token); |
59
|
|
|
|
60
|
|
|
$changePassword = new ChangePassword(); |
61
|
|
|
$form = $this->createForm(ChangePasswordType::class, $changePassword); |
62
|
|
|
|
63
|
|
|
$form->handleRequest($request); |
64
|
|
|
|
65
|
|
|
if ($form->isSubmitted() && $form->isValid()) { |
66
|
|
|
$command = new ResetPassword($user, $changePassword->newPassword, $changePassword->newPassword); |
67
|
|
|
$handler = $this->container->get('multi_user.handler.reset_password'); |
68
|
|
|
$handler->handle($command); |
69
|
|
|
|
70
|
|
|
return $this->redirectToRoute('multi_user_login'); |
71
|
|
|
} |
72
|
|
|
|
73
|
|
|
return |
74
|
|
|
[ |
75
|
|
|
'form' => $form->createView(), |
76
|
|
|
]; |
77
|
|
|
} |
78
|
|
|
} |
79
|
|
|
|