A super-simple, fully tested database encryption system, which allows for extra conversions to take place afterwards.
This package has reached it's end of life. Laravel now supports encryption out-of-the-box, so adding a separate package that does the same is useless.
The software is licensed under the MIT License.
This project requires Laravel 7.x and PHP 7.4 or newer. You should also update your database schemas to allow for encrypted data. Encrypted data is base64-encoded, and might be significantly longer than the same data as, for example, JSON.
It's recommended to use long VARCHAR fields or even TEXT fields.
Just require it via composer, it doesn't register a service provider.
composer require roelofr/laravel-encryption-cast
This class contains a two-way cast that takes extra casts as first and only
argument. null-values are not encrypted.
To encrypt the phone_number field, simply cast it.
protected $casts = [
'phone_number' => \Roelofr\EncryptionCast\Casts\EncryptedAttribute::class
];Say we have a date_of_birth field, we can cast that as a date.
protected $casts = [
'date_of_birth' => \Roelofr\EncryptionCast\Casts\EncryptedAttribute::class . ':date'
];Now, say we have an address which is a collection, we can also cast it like
that.
protected $casts = [
'address' => \Roelofr\EncryptionCast\Casts\EncryptedAttribute::class . ':collection'
];Now, lastly, say you made a custom cast that casts the
medication field to some other type, and named it App\Casts\MedicationCast,
you can send that as a second argument.
protected $casts = [
'medication' => \Roelofr\EncryptionCast\Casts\EncryptedAttribute::class . ':' . \App\Casts\MedicationCast::class
];And that's about it.
To ease development you can use one of the casts in the Compat namespace.
These are included:
- For
austinheap/laravel-database-encryptionyou can useAustinHeapEncryptedAttribute.
If you found any bugs or issues and can help, please open an issue. The code is linted for code style and coverage is exected to be >95% at all times.