Drupal is a registered trademark of Dries Buytaert
drupal 11.3.7 Update released for Drupal core (11.3.7)! drupal 11.2.11 Update released for Drupal core (11.2.11)! drupal 10.6.7 Update released for Drupal core (10.6.7)! drupal 10.5.9 Update released for Drupal core (10.5.9)! cms 2.1.1 Update released for Drupal core (2.1.1)! drupal 11.3.6 Update released for Drupal core (11.3.6)! drupal 10.6.6 Update released for Drupal core (10.6.6)! cms 2.1.0 Update released for Drupal core (2.1.0)! bootstrap 8.x-3.40 Minor update available for theme bootstrap (8.x-3.40). menu_link_attributes 8.x-1.7 Minor update available for module menu_link_attributes (8.x-1.7). eca 3.1.1 Minor update available for module eca (3.1.1). layout_paragraphs 2.1.3 Minor update available for module layout_paragraphs (2.1.3). ai 1.3.3 Minor update available for module ai (1.3.3). ai 1.2.14 Minor update available for module ai (1.2.14). node_revision_delete 2.0.3 Minor update available for module node_revision_delete (2.0.3). moderated_content_bulk_publish 2.0.52 Minor update available for module moderated_content_bulk_publish (2.0.52). klaro 3.0.10 Minor update available for module klaro (3.0.10). klaro 3.0.9 Minor update available for module klaro (3.0.9). layout_paragraphs 2.1.2 Minor update available for module layout_paragraphs (2.1.2). geofield_map 11.1.8 Minor update available for module geofield_map (11.1.8).

key_per_user

2 sites No security coverage
View on drupal.org

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.

Features

Encrypt fields with a different encryption key for each user.

Post-Installation

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.

Setup

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()`).

Additional Requirements

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

Activity

Total releases
1
First release
Jul 2025
Latest release
8 months ago
Release cadence
Stability
0% stable

Releases

Version Type Release date
1.0.0-alpha2 Pre-release Jul 24, 2025