Completed
Push — master ( a7b0c2...fe24f6 )
by Wanderson
02:20
created

RecoveryPassword::updateHash()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 4
nc 1
nop 1
dl 0
loc 5
rs 9.4285
c 0
b 0
f 0
1
<?php
2
3
namespace Win\Authentication;
4
5
use Win\Mailer\Email;
6
use Win\Mvc\Application;
7
use Win\Mvc\Block;
8
9
abstract class RecoveryPassword {
10
11
	/**
12
	 * Envia link de recuperacao de senha via Email
13
	 * @return string | null
14
	 */
15
	public static function sendEmail($email) {
16
		$filters = ['is_enabled = ?' => true, 'access_level > ?' => 0, 'email = ?' => $email];
17
		$uDAO = new UserDAO();
18
		$user = $uDAO->fetch($filters);
19
20
		if ($user->id > 0) {
21
			static::updateHash($user);
22
			$content = new Block('email/content/recovery-password', ['user' => $user]);
23
24
			$mail = new Email();
25
			if (defined('EMAIL_FROM')) {
26
				$mail->setFrom(EMAIL_FROM, Application::app()->getName());
27
			}
28
			$mail->setSubject('Recuperação de Senha');
29
			$mail->addAddress($user->getEmail(), $user->name);
30
			$mail->setContent($content);
31
			return $mail->send();
32
		} else {
33
			return 'Este E-mail não está cadastrado no sistema.';
34
		}
35
	}
36
37
	/** @return string */
38
	public static function getUrl(User $user) {
39
		return Application::app()->getBaseUrl() . 'login/alterar-senha/' . $user->recoreryHash . '/';
40
	}
41
42
	/**
43
	 * Gera/Atualiza um novo recoveryHash
44
	 * @param User $user
45
	 * @return string|null
46
	 */
47
	public static function updateHash(User $user) {
48
		$uDAO = new UserDAO();
49
		$user->recoreryHash = static::generateHash($user);
50
		return $uDAO->save($user);
51
	}
52
53
	/**
54
	 * Limpa o recoveryHash
55
	 * @param User $user
56
	 * @return string|null
57
	 */
58
	public static function clearHash(User $user) {
59
		$uDAO = new UserDAO();
60
		$user->recoreryHash = '';
61
		return $uDAO->save($user);
62
	}
63
64
	/**
65
	 * Gera um novo recoveryHash
66
	 * @param User $user
67
	 */
68
	public static function generateHash(User $user) {
69
		return md5($user->getEmail() . date('Y-m-d'));
70
	}
71
72
}
73