Enviar notificaciones en Laravel a usuarios no registrados
Enviar notificaciones en Laravel a usuarios no registrados


En algunas ocasiones podemos tener la necesidad de Encriptar bases de datos con Laravel, más aún con la llegada del RGPD, si ese es tu caso, en este tutorial vamos a ver qué sencillo es conseguir este propósito gracias a Eloquent Mutators y Accessors.

Definir un Trait para extender Eloquent

Lo primero que vamos a hacer para conseguir un comportamiento más dinámico es crear un trait para sobrescribir los métodos getAttribute y setAttribute de Eloquent, los cuáles nos permitirán alterar los datos de nuestro modelo al momento de obtener y establecer datos.

Además de los métodos mencionados anteriormente, también tenemos 2 métodos importantes, el método encrypt y el método decrypt, es importante decir que este tipo de encriptación no es fiable si los datos que quieres manejar son sensibles, el motivo es que nosotros vamos a querer encriptar pero también desencriptar para mostrar estos datos posteriormente, incluso para iniciar sesión utilizando el correo electrónico, este último es el motivo real, para que fuese seguro la variable $iv debería ser dinámica y no estática.

Aplicar el Trait Encryptable a nuestros modelos

Ahora vamos a abrir por ejemplo el modelo User para utilizar el Trait Encryptable de la siguiente forma.

Sólo por utilizar la propiedad $encryptable pasando las columnas que queramos encriptar en base de datos tenemos suficiente, si ahora por ejemplo registras un nuevo usuario verás que las columnas name y email son encriptadas en base de datos y si obtienes los usuarios verás que al acceder a dichas columnas éstas aparecen sin encriptar.

De momento lo vamos a dejar aquí, en próximas entradas veremos más acerca de este tema, por ejemplo, cómo sobrescribir el proceso de autenticación utilizando datos encriptados, login, registro y recuperación de password.