roelofr / laravel-encryption-cast
An Eloquent cast to encrypt and decrypt data, whilst still allowing your own casts
Installs: 1 190
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 0
Forks: 0
Open Issues: 2
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-encryption
you 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.