roelofr / laravel-encryption-cast
An Eloquent cast to encrypt and decrypt data, whilst still allowing your own casts
Installs: 1 191
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 0
Forks: 0
Open Issues: 2
pkg:composer/roelofr/laravel-encryption-cast
Requires
- php: ^7.4 || ^8.0
- illuminate/contracts: ^7.0 || ^8.0
- illuminate/database: ^7.0 || ^8.0
- illuminate/support: ^7.0 || ^8.0
Requires (Dev)
- nunomaduro/collision: ^4.2 || ^5.0
- orchestra/testbench: ^5.0 || ^6.0
- php-parallel-lint/php-console-highlighter: ^0.5.0
- php-parallel-lint/php-parallel-lint: ^1.2
- phpunit/phpunit: ^9.0
- slevomat/coding-standard: ^6.3
- squizlabs/php_codesniffer: ^3.5
This package is auto-updated.
Last update: 2022-07-17 00:47:07 UTC
README
A super-simple, fully tested database encryption system, which allows for extra conversions to take place afterwards.
End of Life
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.
License
The software is licensed under the MIT License.
Requirements
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.
Installation
Just require it via composer, it doesn't register a service provider.
composer require roelofr/laravel-encryption-cast
Usage
This class contains a two-way cast that takes extra casts as first and only
argument. null-values are not encrypted.
Encrypted strings
To encrypt the phone_number field, simply cast it.
protected $casts = [ 'phone_number' => \Roelofr\EncryptionCast\Casts\EncryptedAttribute::class ];
Encrypted basic types
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' ];
Encrypted collections
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' ];
Encrypted complex models
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.
Compatibility
To ease development you can use one of the casts in the Compat namespace.
These are included:
- For austinheap/laravel-database-encryptionyou can useAustinHeapEncryptedAttribute.
Contributing
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.