Download the PHP package onramplab/laravel-security-model without Composer
On this page you can find all versions of the php package onramplab/laravel-security-model. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package laravel-security-model
laravel-security-model
A Laravel package providing security for Eloquent model
Requirements
- PHP >= 7.4;
- composer.
Features
- Encryption
- Easy to use with Laravel Eloquent model
- Support multiple types of key management service
- AWS KMS
Installation
Install the package via composer
Publish migration files and run command to build tables needed in package
Also, you can choose to publish the configuration file
Usage
Encryption
- Set up credentials for key provider you want to use for encryption
-
Run command to generate a encryption key and a hash key
- Use the
Securable
trait in a model - Implement the
Securable
interface in a model - Set up
$encryptable
attribute in a model to define encryptable fields. You can check out the section below for more info about field parameters
Encryptable Field Parameters
-
type
- Type
string
- Required
yes
- Description
Determinate content type of the encryptable field. Here are available types:
string
json
integer
float
boolean
-
searchable
- Type
boolean
- Required
no
- Description
Determinate whether the encryptable field is searchable. If the field is searchable, you should make a migration to create a new column to store blind index value for searching.
Searchable Encrypted Field
To achieve searching on encrypted fields, we use a strategy called blind indexing. Its idea is to store a hash value of the plaintext in a separate column and would it will be used for searching.
That means if you define a encryptable field to be searchable, you should postfix the original column name with _bidx
to create a new column. For example, if you define a email
column to be searchable, then you need to create a email_bidx
column in your table.
Conditional Encryption
Sometimes you may need to determinate whether a model should be encrypted under certain conditions. To accomplish this, you may define a shouldBeEncryptable
method on your model:
Redaction
- Use the
Securable
trait in a model - Implement the
Securable
interface in a model - Set up
$redactable
attribute in a model to define redactable fields with redactor classes you want to apply for each fields
There are some built-in redactors available for different kinds of model field:
- E164PhoneNumberRedactor
- EmailRedactor
- NameRedactor
- PhoneNumberRedactor
- SecretRedactor
- ZipCodeRedactor
Custom Redactor
Besides those built-in redactors mentioned above, you may wish to specify ones with custom logic. Thus, you are free to create your own redactor class. Just simply implement the class with Redactor
interface, then use it in your securable model.
Running Tests
Changelog
To keep track, please refer to CHANGELOG.md.
Contributing
- Fork it.
- Create your feature branch (git checkout -b my-new-feature).
- Make your changes.
- Run the tests, adding new ones for your own code if necessary (phpunit).
- Commit your changes (git commit -am 'Added some feature').
- Push to the branch (git push origin my-new-feature).
- Create new pull request.
Also please refer to CONTRIBUTION.md.
License
Please refer to LICENSE.
All versions of laravel-security-model with dependencies
aws/aws-sdk-php Version ^3.258
illuminate/database Version ^8.0|^9.0
paragonie/ciphersweet Version ^3.4