Encriptando datos al guardarlos en base de datos con Laravel 5

He tenido que preparar un proceso de pago y para ello teníamos que guardar el número de cuenta IBAN en base de datos. Lógicamente este dato es delicado por lo que mejor guardarlo encriptado. Para ello en la base de datos lo guardaremos como varchar(255).

Luego vamos a necesitar el uso de un trait, para ello crearemos el fichero app\Traits\Encryptable.php:

namespace Aplicacion\Traits;
use Crypt;
trait Encryptable
{
    public function getAttribute($key)
    {
        $value = parent::getAttribute($key);
        if (in_array($key, $this->encryptable)) {
            $value = Crypt::decrypt($value);
        }
        return $value;
    }

    public function setAttribute($key, $value)
    {
        if (in_array($key, $this->encryptable)) {
            $value = Crypt::encrypt($value);
        }
        return parent::setAttribute($key, $value);
    }
}

Luego lo integramos en el modelo:

namespace Aplicacion;
use Illuminate\Database\Eloquent\Model;
use Aplicacion\Traits\Encryptable;

class Registro extends Model {
  use Encryptable;
  protected $table = 'registros';
  protected $fillable = ['razon_social', 'cif', 'email', 'iban'];
// indicamos los campos que van a guardarse encriptados
  protected $encryptable = ['iban'];
}

Ya podre usar el modelo como cualquier otro sin necesidad de preocuparnos por la encriptación

Dejar un comentario?

0 Comentarios.

Deje un comentario


NOTA - Puede usar estosHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.