ResetPasswordPresenterTrait   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 72
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Importance

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

5 Methods

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