/** * Enviamos un correo para recuperar la contraseña. */ public function action_recuperar() { // Verificamos si el usuario está conectado. if (Usuario::is_login()) { // Lo enviamos a la portada. Request::redirect('/'); } // Asignamos el título. $this->template->assign('title', 'Recuperar clave.'); // Cargamos la vista del usuario. $view_usuario = View::factory('usuario/recuperar'); // Cargo datos. $view_usuario->assign('email', ''); $view_usuario->assign('error_email', ''); // Verificamos si se han enviado los datos. if (Request::method() == 'POST') { $error = FALSE; // Verificamos los datos enviados. $email = isset($_POST['email']) ? trim($_POST['email']) : ''; if (!$error) { // Verfico existencia del correo. $model_usuario = new Model_Usuario(); if (!$model_usuario->exists_email($email)) { // Verifico existencia de nick. if (!$model_usuario->exists_nick($email)) { $view_usuario->assign('error_email', 'El nick o correo ingresado no existe.'); $error = TRUE; } else { $model_usuario->load_by_nick($email); $error = FALSE; } } else { $model_usuario->load_by_email($email); $error = FALSE; } } if (!$error) { // Elimino posibles tokens del usuario. $model_recuperacion = new Model_Usuario_Recuperacion(); $model_recuperacion->borrar_por_usuario($model_usuario->id); // Genero un nuevo token. $token = $model_recuperacion->crear($model_usuario->id, $model_usuario->email, Model_Usuario_Recuperacion::TIPO_RECUPERACION); // Configuraciones del sitio. $model_config = new Model_Configuracion(); // Creo el mensaje de correo. $message = Email::get_message(); $message->setSubject('Restaurar contraseña de ' . $model_config->get('nombre', 'Marifa')); $message->setFrom('*****@*****.**', 'Ares'); $message->setTo($email, $model_usuario->nick); // Cargo la vista. $message_view = View::factory('emails/recuperar'); $message_view->assign('codigo', $token); $message_view->assign('titulo', $model_config->get('nombre', 'Marifa')); $message->setBody($message_view->parse()); unset($message_view); // Envio el email. $mailer = Email::get_mailer(); $mailer->send($message); // Registro completo. $view_usuario = View::factory('usuario/recuperar_completo'); } } // Agregamos el la vista a la plantilla. $this->template->assign('contenido', $view_usuario->parse()); }