Drupal is a registered trademark of Dries Buytaert
Protected Pages 3.0.0 Major update available for module protected_pages (3.0.0). Commerce Core 3.3.8 Minor update available for module commerce (3.3.8). Search API HTML Element Filter 1.0.7 Minor update available for module search_api_html_element_filter (1.0.7). Layout Builder Reorder 2.0.1 Minor update available for module layout_builder_reorder (2.0.1). Ban 1.1.0 Minor update available for module ban (1.1.0). Field Formatter Range 2.0.0 Major update available for module field_formatter_range (2.0.0). Field Formatter Range 8.x-1.8 Minor update available for module field_formatter_range (8.x-1.8). UI Patterns (SDC in Drupal UI) 2.0.18 Minor update available for module ui_patterns (2.0.18). Search API Solr 4.3.11 Module search_api_solr updated after 14 months of inactivity (4.3.11). Provus Mega Menu Module provus_mega_menu crossed 1,000 active installs.

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

Activity

Total releases
1
First release
Jul 2025
Latest release
11 months ago
Releases (12 mo)
1 ▲ from 0
Maintenance
Slowing

Releases

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