Completed
Pull Request — master (#2)
by Tomáš
09:20
created

TResetPasswordPresenter   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 72
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 0
Metric Value
wmc 6
lcom 1
cbo 2
dl 0
loc 72
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
triggerPasswordRequestNotFound() 0 1 ?
A injectPasswordRequestManager() 0 4 1
A injectResetPasswordControlFactory() 0 4 1
A actionDefault() 0 10 2
A createResetPasswordControl() 0 8 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace SixtyEightPublishers\User\ForgotPassword\UI;
6
7
use Nette;
8
use SixtyEightPublishers;
9
10
trait TResetPasswordPresenter
11
{
12
	/** @var NULL|\SixtyEightPublishers\User\ForgotPassword\PasswordRequest\IPasswordRequestManager */
13
	private $passwordRequestManager;
14
15
	/** @var NULL|\SixtyEightPublishers\User\ForgotPassword\Control\ResetPassword\IResetPasswordControlFactory */
16
	public $resetPasswordControlFactory;
17
18
	/** @var NULL|\SixtyEightPublishers\User\ForgotPassword\DoctrineEntity\IPasswordRequest */
19
	private $passwordRequest;
20
21
	/**
22
	 * @param \SixtyEightPublishers\User\ForgotPassword\Exception\PasswordRequestProcessException $e
23
	 *
24
	 * @return void
25
	 */
26
	abstract protected function triggerPasswordRequestNotFound(SixtyEightPublishers\User\ForgotPassword\Exception\PasswordRequestProcessException $e): void;
27
28
	/**
29
	 * @internal
30
	 *
31
	 * @param \SixtyEightPublishers\User\ForgotPassword\PasswordRequest\IPasswordRequestManager $passwordRequestManager
32
	 *
33
	 * @return void
34
	 */
35
	public function injectPasswordRequestManager(SixtyEightPublishers\User\ForgotPassword\PasswordRequest\IPasswordRequestManager $passwordRequestManager): void
36
	{
37
		$this->passwordRequestManager = $passwordRequestManager;
38
	}
39
40
	/**
41
	 * @internal
42
	 *
43
	 * @param \SixtyEightPublishers\User\ForgotPassword\Control\ResetPassword\IResetPasswordControlFactory $resetPasswordControlFactory
44
	 *
45
	 * @return void
46
	 */
47
	public function injectResetPasswordControlFactory(SixtyEightPublishers\User\ForgotPassword\Control\ResetPassword\IResetPasswordControlFactory $resetPasswordControlFactory): void
48
	{
49
		$this->resetPasswordControlFactory = $resetPasswordControlFactory;
50
	}
51
52
	/**
53
	 * @param string $uid User UUID
54
	 * @param string $rid PasswordRequest UUID
55
	 *
56
	 * @return void
57
	 * @throws \Nette\Application\BadRequestException
58
	 */
59
	public function actionDefault(string $uid, string $rid): void
60
	{
61
		try {
62
			$this->passwordRequest = $this->passwordRequestManager->findRequest($uid, $rid);
63
		} catch (SixtyEightPublishers\User\ForgotPassword\Exception\PasswordRequestProcessException $e) {
64
			$this->triggerPasswordRequestNotFound($e);
65
66
			throw new Nette\Application\BadRequestException();
67
		}
68
	}
69
70
	/**
71
	 * @return \SixtyEightPublishers\User\ForgotPassword\Control\ResetPassword\ResetPasswordControl
72
	 */
73
	protected function createResetPasswordControl(): SixtyEightPublishers\User\ForgotPassword\Control\ResetPassword\ResetPasswordControl
74
	{
75
		if (!$this->passwordRequest instanceof SixtyEightPublishers\User\ForgotPassword\DoctrineEntity\IPasswordRequest) {
76
			throw new Nette\InvalidStateException('Password Request is not set.');
77
		}
78
79
		return $this->resetPasswordControlFactory->create($this->passwordRequest);
80
	}
81
}
82