silverd / laravel-model-encryption
A trait to encrypt data models in Laravel, automatically encrypt and decrypt model data overriding getAttribute an setAttribute methods of Eloquent Model.
Requires
- php: >=8.0
- ext-openssl: *
- illuminate/database: *
This package is auto-updated.
Last update: 2024-12-13 16:09:07 UTC
README
A trait to encrypt data models in Laravel, this automatically encrypt and decrypt model data overriding getAttribute an setAttribute methods of Eloquent Model.
How to install
composer require silverd/laravel-model-encryption:dev-master
Publish configuration file, this will create config/encrypt.php
php artisan vendor:publish --provider="Silverd\Encryptable\ServiceProvider"
How to use
-
You must add
XES_ENCRYPT_CIPHER
/XES_ENCRYPT_KEY
/XES_ENCRYPT_IV
in your .env file or set it in yourconfig/encrypt.php
file -
Use the
Silverd\Encryptable\Encryptable
trait:
use Silverd\Encryptable\Encryptable;
- Set the
$encryptable
array on your Model.
protected $encryptable = ['encrypted_property'];
- Here's a complete example:
namespace App; use Illuminate\Database\Eloquent\Model; use Silverd\Encryptable\Encryptable; class User extends Model { use Encryptable; protected $encryptable = [ 'email', 'address' , 'name', ]; }
- Optional. Encrypt your current data
If you have current data in your database you can encrypt it with the: php artisan encryptable:encryptModel --model="App\\Models\\RxHolder"
command.
Additionally you can decrypt it using the:php artisan encryptable:decryptModel --model="App\\Models\\RxHolder"
command.
Note: You must implement first the Encryptable
trait and set $encryptable
attributes
- If you are using exists and unique rules with encrypted values replace it with exists_encrypted and unique_encrypted
$validator = validator(['email'=>'foo@bar.com'], ['email'=>'exists_encrypted:users,email']);
- You can still use
where
functions
$validator = User::where('email','foo@bar.com')->first();
Automatically foo@bar.com
will be encrypted and pass it to the query builder.