コード例 #1
0
ファイル: usuario.php プロジェクト: 4bs4/marifa
 /**
  * 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());
 }