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
0 Comentarios.