CancelPasswordRequestPresenterTrait   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 66
Duplicated Lines 0 %

Coupling/Cohesion

Components 2
Dependencies 0

Importance

Changes 0
Metric Value
wmc 5
lcom 2
cbo 0
dl 0
loc 66
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A injectPasswordRequestManager() 0 4 1
A startup() 0 9 2
A actionDefault() 0 14 2
triggerSuccess() 0 1 ?
triggerError() 0 1 ?
1
<?php
2
3
declare(strict_types=1);
4
5
namespace SixtyEightPublishers\User\ForgotPassword\UI;
6
7
use Nette\Application\BadRequestException;
8
use SixtyEightPublishers\User\ForgotPassword\Entity\PasswordRequestInterface;
9
use SixtyEightPublishers\User\ForgotPassword\Exception\PasswordRequestProcessException;
10
use SixtyEightPublishers\User\ForgotPassword\PasswordRequest\PasswordRequestManagerInterface;
11
12
/**
13
 * Use in Presenter!
14
 *
15
 * @property-read string $action
16
 * @method void changeAction($action)
17
 */
18
trait CancelPasswordRequestPresenterTrait
19
{
20
	/** @var NULL|\SixtyEightPublishers\User\ForgotPassword\PasswordRequest\PasswordRequestManagerInterface */
21
	private $passwordRequestManager;
22
23
	/**
24
	 * @internal
25
	 *
26
	 * @param \SixtyEightPublishers\User\ForgotPassword\PasswordRequest\PasswordRequestManagerInterface $passwordRequestManager
27
	 *
28
	 * @return void
29
	 */
30
	public function injectPasswordRequestManager(PasswordRequestManagerInterface $passwordRequestManager): void
31
	{
32
		$this->passwordRequestManager = $passwordRequestManager;
33
	}
34
35
	/**
36
	 * {@inheritdoc}
37
	 */
38
	public function startup(): void
39
	{
40
		/** @noinspection PhpUndefinedClassInspection */
41
		parent::startup();
42
43
		if ($this->action !== 'default') {
44
			$this->changeAction('default');
45
		}
46
	}
47
48
	/**
49
	 * @param string $uid User UUID
50
	 * @param string $rid PasswordRequest UUID
51
	 *
52
	 * @return void
53
	 * @throws \Nette\Application\BadRequestException
54
	 */
55
	public function actionDefault(string $uid, string $rid): void
56
	{
57
		try {
58
			$this->passwordRequestManager->cancel(
59
				$request = $this->passwordRequestManager->findRequest($uid, $rid)
60
			);
61
62
			$this->triggerSuccess($request);
63
		} catch (PasswordRequestProcessException $e) {
64
			$this->triggerError($e);
65
66
			throw new BadRequestException();
67
		}
68
	}
69
70
	/**
71
	 * @param \SixtyEightPublishers\User\ForgotPassword\Entity\PasswordRequestInterface $passwordRequest
72
	 *
73
	 * @return void
74
	 */
75
	abstract protected function triggerSuccess(PasswordRequestInterface $passwordRequest): void;
76
77
	/**
78
	 * @param \SixtyEightPublishers\User\ForgotPassword\Exception\PasswordRequestProcessException $e
79
	 *
80
	 * @return void
81
	 */
82
	abstract protected function triggerError(PasswordRequestProcessException $e): void;
83
}
84