Skip to main content
Drupal is a registered trademark of Dries Buytaert
Release: OpenID Connect / OAuth client 3.0.0-alpha9 New alpha version released for module openid_connect (3.0.0-alpha9). Usage Milestone: Google Analytics Module google_analytics crossed 1,000 active installs. Release: Timelinr 1.0.1 Minor update available for module timelinr (1.0.1). Release: GraphQL Compose Codegen 1.1.2 Minor update available for module graphql_compose_codegen (1.1.2). Release: Mapy.com 1.1.3 Minor update available for module mapycom (1.1.3). Release: Ckeditor5 entity browser 3.0.3 Minor update available for module ckeditor5_entity_browser (3.0.3). Release: Ckeditor5 entity browser 3.0.1 Minor update available for module ckeditor5_entity_browser (3.0.1). Release: Ckeditor5 entity browser 3.0.2 Minor update available for module ckeditor5_entity_browser (3.0.2). Release: Teamleader Integration 4.0.2 Minor update available for module teamleader (4.0.2). Module Revived: Entityqueue Buttons 1.1.2 Module entityqueue_buttons updated after 8 months of inactivity (1.1.2).

This module allows fields to be encrypted with a unique key for each user. It requires custom code to implement and integrates with the Field Encryption and Sodium modules to provide per-user data security.

This EXPERIMENTAL module provides a way to use an encryption key per user.

In combination with the Field Encryption module, this enables you to encrypt each user's fields with a different
key.

This is a developer-only module. You will need to write custom code for it to work.

Submit bug reports and feature suggestions, or track changes in the href="https://www.drupal.org/project/issues/key_per_user">issue queue.

Table of contents

  • Features
  • Requirements
  • Installation
  • Configuration
  • Maintainers

Features

  • Encrypt fields with a different encryption key for each user.

Requirements

This module requires the following modules:

  • Field Encryption (to encrypt fields per user)
  • Sodium (the encryption method used by this module)
  • Encrypt (dependency of Field Encryption)
  • Key (dependency of Encrypt)

Installation

Install as you would normally install a contributed Drupal module. For further information, see href="https://www.drupal.org/docs/extending-drupal/installing-modules">Installing Drupal Modules.

This module requires you to use the install config (encrypt profile key_per_user and key
per_user).

If you delete this config, the module will break.

Configuration

In custom code, you need to extend the UserBundle to implement KeyPerUserInterface.

You need to implement two methods:

  • getEncryptedPerUserBundles() This method returns a list of the entity types which have fields that
    should be encrypted per user.
  • getEncryptionKey() This method returns the encryption key as a string. It should be a value that the
    Sodium module can work with.

How do I set up the encryption key per user?

Here's one approach:

  1. On the user entity, add a text field.
  2. Encrypt this field with the Field Encrypt module.
  3. Restrict permissions so that users cannot view or edit this field.
  4. In your UserBundle, add a function to set the value of the field to the per-user encryption key. For example, you
    can call KeyPerUserGenerator::generateEncryptionKey().
  5. Specify the bundles to encrypt per user in your UserBundle (output of
    getEncryptedPerUserBundles()).

Maintainers

Depends on

Dependencies of the latest stable release

No dependencies recorded for this project.

Required by

Tracked projects that depend on this one

No tracked projects depend on this one yet.

Activity

Tracked releases
3
Tracked since
Oct 2024
Latest release
1 year ago
Releases (12 mo)
0 ▼ from 3
Maintenance
Slowing

Release Timeline

Releases

Version Type Core Release date
1.0.0-alpha2 Pre-release 11 Jul 24, 2025
1.0.0-alpha1 Pre-release 10–11 Oct 26, 2024
1.0.x-dev Dev 11 Oct 24, 2024