1: <?php
2:
3: App::import('Model', 'LdapUser');
4:
5: class UserResetPassword extends AppModel {
6:
7: const MIN_PASSWORD_LENGTH = 6;
8: const MAX_PASSWORD_LENGTH = 30;
9:
10: var $useTable = false;
11: var $validate = array(
12: 'user_reset_password_request_id' => array(
13: 'rule' => array('requestIdValidacao'),
14: 'message' => 'Usuário e/ou requisição não existente'
15: ),
16: 'nova_senha' => array(
17: 'rule' => array('novaSenhaValidacao'),
18: 'message' => 'Nova senha inválida'
19: ),
20: 'confirmacao_senha' => array(
21: 'rule' => array('confirmacaoSenhaValidacao'),
22: 'message' => 'Confirmação não confere com nova senha'
23: )
24: );
25:
26: public function __construct($id = false, $table = null, $ds = null) {
27: parent::__construct($id, $table, $ds);
28: $this->UserResetPasswordRequest = ClassRegistry::init('Authentication.UserResetPasswordRequest');
29: $this->AuthenticationUser = ClassRegistry::init('Authentication.AuthenticationUser');
30: }
31:
32: public function save($data = null, $validate = true, $fieldList = array()) {
33: $this->set($data);
34: if ($this->validates()) {
35: $request = $this->UserResetPasswordRequest->findByid(
36: $this->data[$this->alias]['user_reset_password_request_id']
37: );
38:
39: $this->AuthenticationUser->changePassword(
40: $request['UserResetPasswordRequest']['user_id']
41: , $this->data[$this->alias]['nova_senha']
42: );
43: $request['UserResetPasswordRequest']['usado'] = date('Y-m-d H:i:s');
44: $this->UserResetPasswordRequest->save($request);
45: return true;
46: }
47:
48: return false;
49: }
50:
51: function requestIdValidacao($check) {
52: return ClassRegistry::init('UserResetPasswordRequest')->findByid(
53: $check['user_reset_password_request_id']) ? true : false;
54: }
55:
56: function novaSenhaValidacao($check) {
57: foreach ($check as $password) {
58: $password = trim($password);
59: if (strlen($password) < self::MIN_PASSWORD_LENGTH || strlen($password) > self::MAX_PASSWORD_LENGTH) {
60: return false;
61: }
62: }
63:
64: return true;
65: }
66:
67: function confirmacaoSenhaValidacao($check) {
68: foreach ($check as $value) {
69: if ($value != $this->data[$this->alias]['nova_senha']) {
70: return false;
71: }
72: }
73: return true;
74: }
75:
76:
77: }
78:
79: ?>
80: