Continuamos preparando nuestro proyecto para la salida a producción. Veamos esta porción de código, el uso del mail. Aquí, como dijimos, estamos usando lo que es Ethereal, el servicio éste, para el manejo de emails locales, es decir, esto no va a funcionar para un sitio productivo donde hay que mandar mails a gente real. Por lo tanto, para esa tarea, hay muchas alternativas. la que nosotros sugerimos, la que yo te sugiero es utilizar a SendGrid. Y vamos a configurar una cuenta allí, que también tiene una versión gratuita para que empieces a hacer pruebas y es más que suficiente para lo que necesitamos por el momento. Vamos a instalar la librería, es "nodemailer-sendgrid-transport". Acuérdate que antes habíamos instalado "nodemailer" para el manejo de mails, dentro de Node, éste es como un plugin, una librería adicional que agrega soporte a SendGrid. Ahora tenemos que configurar la cuenta en Sendgrid. Entonces vamos a la web, vamos a sendgrid.com o app.sendgrid.com/login. Créate una cuenta si no la tienes, no tiene mucha ciencia eso. Ingresamos y aquí, vamos a ir a los detalles de nuestra cuenta. Fíjate que tenemos una sección a la izquierda donde dice "API Keys", vamos a crear una, vamos a ponerle el nombre del proyecto, "red-bicicletas". Fíjate que, por razones de seguridad, no se va a mostrar de vuelta este código; así que, nuevamente, este código lo debemos guardar. ¿Qué vamos a hacer con este código? Lo primero que vamos a hacer para no perderlo es guardarlo como una "setting" del proyecto de Heroku, "SENDGRID_API_SECRET", lo agregamos. Y esta variable de ambiente, en principio, no vamos a necesitarla en nuestro ambiente local, dado que en nuestro ambiente local no vamos a mandar mails con SendGrid. Entonces, ¿qué es lo que vamos a hacer? Vamos a modificar esto, en parte primero para... Perdón, con "const", mejor. Acá ven en "sgTransport", es el "sendgrid-transport", la librería que acabamos de configurar. Y luego, vamos a hacer lo siguiente, vamos a crear las configuraciones del envío de mail de acuerdo al ambiente donde estemos parados. Cuando estemos en el ambiente local, desarrollando nuestra aplicación, estaremos aquí, usaremos esto y cuando no, usaremos lo de SendGrid. Permitime que voy a copiar y pegar el código, yo lo tenía resuelto. Entonces, fíjate lo siguiente, lo primero que vamos a hacer es preguntar, ¿estamos en producción? Acordate el ".env", acá figura "development", así que esto acá no va a entrar. ¿Estamos en staging?, es decir, ¿estamos en el servidor de prueba? Acá podríamos tener otra variable de ambiente que se llame igual que en la de producción, que sea el servidor de pruebas. Este era SECRET y SECRET. Acuérdate que el ".env", que es una manera de ambiente. En el ambiente local usamos este archivo, el ".env" que definimos antes, cuando estemos en Heroku, Heroku reemplaza las variables de configuración del ".env", o sea, detecta que está en la librería "dot-env", crea un "dot env", un archivo ".env" en el ambiente de Heroku, y les pasa todas las variables de configuración que definimos en Heroku mismo, por eso las podemos utilizar. Así que, va a buscar el "SENDGRID_API_SECRET" y configura el "mailConfig" con el "sgTransport". En "staging", lo mismo, similar. Y en el caso que no sea ni producción ni "staging", asumimos que estamos en ambiente de desarrollo, usamos "Ethereal". Y acá, vamos a sacar las variables de ambiente, de "ethereal_user" y "ethereal_password". Si bien es una cuenta de ambiente local, los de Ethereal, yo suelo guardarlas en los ambientes de configuración para que cada programador del equipo, obligarlos de alguna manera, que tengan su propia cuenta de Ethereal. Así, quedan más encapsuladas las pruebas que hace cada uno y pueden ver el impacto de sus cambios o sus modificaciones, o sus avances en su propia cuenta de Ethereal y no tener una compartida donde va a haber un poco de todo y, seguramente, sea un poco confuso y, además, no cuesta nada hacerlo. Así que, acá tenemos esto que ahora lo sacamos enseguida, vamos a crear las variables de ambiente de Ethereal, "ethereal_user", y la vamos a escribir con estas, y vamos definir la otra, "ethereal_password". Y aquí, ya creamos el Transport con el "mailConfig" que es el que, justamente, estamos editando en cada una de las instancias. Ya tenemos todo configurado. No te preocupes que, enseguida, a medida que vayamos agregándole funciones al sistema, vamos a hacer una pasada y vamos a ir probando todas estas configuraciones. Fíjate que es bastante sencillo. Ya estamos en condiciones de "pushear" nuestro código, y acuérdate que para deployarlo a Heroku vamos a hacerlo juntos. El "git status", hacemos el "commit" y le ponemos "agregamos sendgrid", y hacemos un "git push" para "pushear" al "Repo", el "Repo" de Bitbucket, y vamos a deployar en Heroku. Toda esta primera parte, mientras se termina de ployear, para hacer un resumen de todo lo que fuimos haciendo: creamos nuestro servidor en Heroku, pusimos la librería "dot-env" para mapear las variables de ambiente al ambiente en el que estemos trabajando, creamos la cuenta Mongo Atlas para tener nuestro servidor en la nube y hemos configurado las variables de ambiente en Heroku para que la URL de Mongo le pegue al servicio de Mongo que creamos con Mongo Atlas. Y ahora, esto último que hicimos, fue crear una cuenta en SendGrid para el manejo de mails en ambiente productivo. Ya vamos teniendo un ciclo completo de soluciones o una suite bastante más amplia de soluciones productivas que, de hecho, son las que se usan en la industria, son de primer nivel todas, para tener nuestro sitio productivo. Enseguida, vamos a comenzar con la parte de autenticación con Google y con Facebook, que era la otra parte de este curso. Y este paso era previo, más que nada, porque para registrar esos servicios de OAuth, o Authentication, ya tenemos que tener algunos servidores públicos con nuestro sitio corriendo, dado que nos requieren algunas validaciones al momento de registrar la aplicación.