2017 © Pedro Peláez
 

symfony-bundle doctrine-encryption-bundle

Doctrine encryption bundle for Symfony to aid with GDPR and general field encryption

image

matt9mg/doctrine-encryption-bundle

Doctrine encryption bundle for Symfony to aid with GDPR and general field encryption

  • Tuesday, November 14, 2017
  • by matt9mg
  • Repository
  • 2 Watchers
  • 0 Stars
  • 1,084 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 1 Versions
  • 90 % Grown

The README.md

Doctrine Encryption Bundle

SensioLabsInsight, (*1)

With GDPR becoming business critical here's a bundle that handles the data encryption layer., (*2)

Installation

composer require matt9mg/doctrine-encryption-bundle dev-master, (*3)

   app/AppKernel.php


    public function registerBundles()
    {
        $bundles = [
            ...
            new Matt9mg\Encryption\DoctrineEncryptionBundle(),
            ...
        ];
    }

Configuration

Basic, (*4)

Basic configuration will take advantage of the encryption library provided, (*5)

matt9mg_doctrine_encryption:
  key: 'an encryption key'
  iv: 'an encryption iv'
  suffix: 'an encryption suffix'

Full, (*6)

matt9mg_doctrine_encryption:
  key: 'an encryption key'
  iv: 'an encryption iv'
  suffix: 'an encryption suffix'
  method: 'AES-256-CBC' // This is the default setting
  class: 'Full\Namespace\To\Your\Encryptor' // If not supplied will use the default

Usage

Using the encryption service in controller

use Matt9mg\Encryption\Bridge\Bridge;

$this->get(Bridge::class)->encrypt($string)
$this->get(Bridge::class)->decrypt($string);

Entity Annotation

    use Matt9mg\Encryption\Annotation\Encrypted;

    class User {
       /**
       * @Encrypted()
       */
       private $firstname;

    }

The above will auto encrypt on prePersist and preUpdate, (*7)

Twig

{{ user.firstname | decrypt }}

Design decision

You'll notice there is no postLoad event to convert back to decrypted. Experience with doctrine is that as the entity is changed it adds it to the queue to be flushed. Say if you have an account with 1000 users each user would be decrypted meaning re saved., (*8)

How to add a custom Encryptor

Create a class that extends Matt9mg\Encryption\Encryptor\EncryptorInterface. Then register as mentioned in the above config., (*9)

Tests

Yes there a loads of lovely unit tests :), (*10)

Roadmap

  • [ ] Form inputs
  • [ ] Command line util
  • [ ] Travis integration

The Versions

14/11 2017

dev-master

9999999-dev https://github.com/matt9mg/doctrine-encryption-bundle

Doctrine encryption bundle for Symfony to aid with GDPR and general field encryption

  Sources   Download

MIT

The Requires

  • php >=7

 

by Matthew Thomas

orm bundle doctrine symfony encryption gdpr matt9mg