Evitar correos temporales o desechables en los formularios con Laravel

Cuando nos registramos en alguna página web y no queremos dar nuestro correo, porque simplemente queremos probar la web o por cualquier otra razón, utilizamos servicios que nos proveen correos temporales o desechables gratis (ej: 10MinuteMail, Temp Mail, etc, etc. hay muchísimos). Estos correos son correos que pasado X tiempo se eliminan automáticamente. Pero a los admins de las webs, que nuestros usuarios utilicen este tipo de correos no nos interesa, ya que no podremos enviarles ningún correo a este usuario (ni compañas de email, ni cualquier otro tipo de correo) ya que cuando pase el tiempo, ese correo no existirá y, además, normalmente cuando la gente se registra utilizando ese tipo de servicios es para probar la web en la que se registran y normalmente no volver a utilizarla. Entonces, nos interesa evitar que la gente utilice ese tipo de correos, hoy, vamos a ver como hacerlo.

Para hacer esto, vamos a utilizar un paquete llamado Laravel Disposable Email que trae un lista enorme de dominios que son de este tipo de páginas y ya tiene creada una regla de validación para los formularios lista para utilizarla en las validaciones de formularios o Form Requests. Para instalarlo, ejecutamos el siguiente comando:

Cuando finalice, vamos al archivo config/app.php y añadimos la siguiente línea en el array de aliases:

Publicamos los archivos de configuración del paquete en nuestro proyecto:

Y descargamos la última versión de la lista de dominios definida en el archivo config/disposable-email.php (como pone en la documentación del paquete en el punto 6 podríamos crear un proceso que ejecute este comando y que se vaya actualizando la lista cada X automáticamente):

Ya tenemos el paquete listo para ser utilizado. Para comprobarlo vamos a ir a Tinker, para quien no lo sepa Tinker es una consola interactiva para Laravel. Simplemente, ejecutamos :

Para probarlo voy a cualquier servicio de los comentados anteriormente y creo un correo temporal y ejecuto lo siguiente:

Como puedes ver, marca como que son desechables los tres email que he puesto, los tres son de estos tipos de servicio. El primero es de https://temp-mail.org/, el segundo es de https://getnada.com/ y el tercero de https://www.guerrillamail.com/.

 

Ahora vamos a ver como hacer para validar el campo email de un formulario y que no permita este tipo de emails. Como he comentado al principio el paquete ya viene con una regla, la cual simplemente tendremos que poner en la Form Request o en la validación del formulario. Vamos a ponerlo en la del login a modo de ejemplo:

Y como podemos ver nos da un error al poner un email de los anteriores:

Para añadirlo a cualquier otra validación de formulario o Form Request, sería lo mismo. Simplemente, añadir indisposable en el campo email.

Como pone en la documentación, si quisieramos que el mensaje de error fuese en otro idioma, se añadiría una línia con la key indisposable y el mensaje de error en el archivo validation.php de resources/lang/[idima].

Y finalmente, si quisieramos cambiar el listado de dominios, lo haríamos en el archivo de config del paquete. En este archivo, también podríamos cambiar la carpeta de destino donde se guardaría el listado descargado y si habilitamos o no la caché.


Aloja tu proyecto en DigitalOcean: Obtén $200 de crédito gratis al registrarte a través de este enlace.

Si hay cualquier tipo de error en el post o te surge cualquier duda, no dudes en ponerlo en los comentarios o enviarme un correo desde la página de contacto.

? CONTACTAR

Deja una respuesta

  Acepto la política de privacidad