Skip to content

sandeep0108/laravel-mysql-encrypt

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Laravel/Lumen MySql AES Encrypt/Decrypt

Laravel/Lumen database encryption at database side using native AES_DECRYPT and AES_ENCRYPT functions. Automatically encrypt and decrypt fields in your Models.

Install

1. Composer

composer require tapanderasari/laravel-mysql-encrypt

2. Publish config (optional)

Laravel

php artisan vendor:publish --provider="TapanDerasari\MysqlEncrypt\Providers\LaravelServiceProvider"

Lumen

mkdir -p config
cp vendor/tapanderasari/laravel-mysql-encrypt/config/config.php config/mysql-encrypt.php

3. Configure Provider

Laravel

  • For Laravel 5.5 or later, the service provider is automatically loaded, skip this step.

  • For Laravel 5.4 or earlier, add the following to config/app.php:

'providers' => array(
    TapanDerasari\\MysqlEncrypt\\Providers\\LaravelServiceProvider::class
);

Lumen

  • For Lumen, add the following to bootstrap/app.php:
$app->register(TapanDerasari\MysqlEncrypt\Providers\LumenServiceProvider::class);

4. Set encryption key in .env file

APP_AESENCRYPT_KEY=yourencryptionkey

Update Models

<?php

namespace App;

use DanielPardamean\MysqlEncrypt\Traits\Encryptable;
use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    use Encryptable; // <-- 1. Include trait

    protected $encryptable = [ // <-- 2. Include columns to be encrypted
        'email',
        'first_name',
        'last_name',
        'telephone',
    ];
}

Validators

unique_encrypted

unique_encrypted:<table>,<field(optional)>

exists_encrypted

exists_encrypted:<table>,<field(optional)>

Scopes

Custom Local scopes available:

whereEncrypted whereNotEncrypted orWhereEncrypted orWhereNotEncrypted orderByEncrypted

Global scope DecryptSelectScope automatically booted in models using Encryptable trait.

Schema columns to support encrypted data

Schema::create('users', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->string('password');
    $table->rememberToken();
    $table->timestamps();
});

// Once the table has been created, use ALTER TABLE to create VARBINARY
// or BLOB types to store encrypted data.
DB::statement('ALTER TABLE `users` ADD `first_name` VARBINARY(300)');
DB::statement('ALTER TABLE `users` ADD `last_name` VARBINARY(300)');
DB::statement('ALTER TABLE `users` ADD `email` VARBINARY(300)');
DB::statement('ALTER TABLE `users` ADD `telephone` VARBINARY(50)');

License

The MIT License (MIT). Please see License File for more information.

About

(WIP) Laravel 10.x Database encryption mysql side

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 100.0%