Merge branch 'master' into captcha

This commit is contained in:
ivan 2016-08-20 19:22:17 -03:00
commit 5972427cf2
8 changed files with 84 additions and 14 deletions

View File

@ -8,6 +8,7 @@ class RecoverPasswordController extends Controller {
private $email; private $email;
private $token; private $token;
private $password; private $password;
private $user;
public function validations() { public function validations() {
return [ return [
@ -37,19 +38,31 @@ class RecoverPasswordController extends Controller {
} }
public function changePassword() { public function changePassword() {
$recoverPassword = RecoverPassword::getDataStore($this->token, 'token'); $recoverPassword = RecoverPassword::getDataStore($this->token, 'token');
$user = User::getDataStore($this->email, 'email'); $this->user = User::getDataStore($this->email, 'email');
if (!$recoverPassword->isNull() && !$user->isNull()) { if (!$recoverPassword->isNull() && !$this->user->isNull()) {
$recoverPassword->delete(); $recoverPassword->delete();
$user->setProperties([ $this->user->setProperties([
'password' => Hashing::hashPassword($this->password) 'password' => Hashing::hashPassword($this->password)
]); ]);
$user->store(); $this->user->store();
$this->sendMail();
Response::respondSuccess(); Response::respondSuccess();
} else { } else {
Response::respondError(ERRORS::NO_PERMISSION); Response::respondError(ERRORS::NO_PERMISSION);
} }
} }
public function sendMail() {
$mailSender = new MailSender();
$mailSender->setTemplate(MailTemplate::PASSWORD_RECOVERED, [
'to' => $this->user->email,
'name' => $this->user->name,
]);
$mailSender->send();
}
} }

View File

@ -5,6 +5,9 @@ DataValidator::with('CustomValidations', true);
class SendRecoverPasswordController extends Controller { class SendRecoverPasswordController extends Controller {
const PATH = '/send-recover-password'; const PATH = '/send-recover-password';
private $token;
private $user;
public function validations() { public function validations() {
return [ return [
'permission' => 'any', 'permission' => 'any',
@ -19,17 +22,36 @@ class SendRecoverPasswordController extends Controller {
public function handler() { public function handler() {
$email = Controller::request('email'); $email = Controller::request('email');
$this->user = User::getUser($email,'email');
$token = Hashing::generateRandomToken(); if(!$this->user->isNull()) {
$this->token = Hashing::generateRandomToken();
$recoverPassword = new RecoverPassword(); $recoverPassword = new RecoverPassword();
$recoverPassword->setProperties(array( $recoverPassword->setProperties(array(
'email' => $email, 'email' => $email,
'token' => $token 'token' => $this->token
)); ));
$recoverPassword->store(); $recoverPassword->store();
$this->sendEmail();
Response::respondSuccess(); Response::respondSuccess();
//TODO: mandar mail con token } else {
Response::respondError(ERRORS::INVALID_EMAIL);
}
}
public function sendEmail() {
$mailSender = new MailSender();
$mailSender->setTemplate(MailTemplate::PASSWORD_FORGOT, [
'to' => $this->user->email,
'name' => $this->user->name,
'token' => $this->token
]);
$mailSender->send();
} }
} }

View File

@ -32,7 +32,27 @@ class InitialMails {
'subject' => 'Tu correo electronico a sido cambiada - OpenSupports', 'subject' => 'Tu correo electronico a sido cambiada - OpenSupports',
'body' => file_get_contents('data/mail-templates/user-edit-email-es.html') 'body' => file_get_contents('data/mail-templates/user-edit-email-es.html')
] ]
],
'PASSWORD_FORGOT' => [
'en' => [
'subject' => 'forgotten password - OpenSupports',
'body' => file_get_contents('data/mail-templates/user-password-forgot-en.html')
],
'es' => [
'subject' => 'Contraseña olvidada - OpenSupports',
'body' => file_get_contents('data/mail-templates/user-password-forgot-es.html')
] ]
],
'PASSWORD_RECOVERED' => [
'en' => [
'subject' => 'Recover Password - OpenSupports',
'body' => file_get_contents('data/mail-templates/user-recovered-password-en.html')
],
'es' => [
'subject' => 'Recuperación de contraseña - OpenSupports',
'body' => file_get_contents('data/mail-templates/user-recovered-password-es.html')
]
],
]; ];
} }
} }

View File

@ -0,0 +1,3 @@
<div>
Hi {{name}} , for change your password you most put in this code {{token}}
</div>

View File

@ -0,0 +1,4 @@
<div>
Hola {{name}} , has requerido un cambio de contraseña
Usa el siguiente codigo para confirmar tu cambio {{token}}
</div>

View File

@ -0,0 +1,3 @@
<div>
Hi {{name}} , OpenSupports' team wanna inform you that you password has been chageed successfully.
</div>

View File

@ -0,0 +1,3 @@
<div>
Hola {{name}} , el equipo de OpenSupports te informa que tu contraseña ha sido cambiada
</div>

View File

@ -6,6 +6,8 @@ class MailTemplate extends DataStore {
const USER_SIGNUP = 'USER_SIGNUP'; const USER_SIGNUP = 'USER_SIGNUP';
const USER_PASSWORD = 'USER_PASSWORD'; const USER_PASSWORD = 'USER_PASSWORD';
const PASSWORD_FORGOT = 'PASSWORD_FORGOT';
const PASSWORD_RECOVERED = 'PASSWORD_RECOVERED';
public static function getTemplate($type) { public static function getTemplate($type) {
$globalLanguage = Setting::getSetting('language')->value; $globalLanguage = Setting::getSetting('language')->value;