jezzdk/statamic-secret

There is no license information available for the latest version (v1.1) of this package.

v1.1 2022-02-14 21:09 UTC

This package is auto-updated.

Last update: 2024-12-15 03:16:09 UTC


README

With this addon you can store text that will be encrypted using generated RSA keys. The text will be decrypted in the control panel and when augmented, but no one will have a clue what the value is just by looking at the content files.

Features

This addon:

  • Adds a fieldtype that enables the user to store encrypted single- or multiline text
  • Provides a command for generating RSA keys
  • Provides a way to store the RSA keys in any disk that has been configured in config/filesystem.php (Pro only)

How to Install

You can search for this addon in the Tools > Addons section of the Statamic control panel and click install, or run the following command from your project root:

composer require jezzdk/statamic-secret

You can set some .env variables to change options (the values below are the defaults):

// The RSA key length in bytes
STATAMIC_SECRET_KEY_LENGTH=4096 

// The path and filename for the public key
STATAMIC_SECRET_KEY_PUBLIC=statamic_secret.pub

// The path and filename for the private key
STATAMIC_SECRET_KEY_PRIVATE=statamic_secret 

// The filesystem disk to use as storage (Pro only)
STATAMIC_SECRET_DISK=local

You can publish the config file with:

php artisan vendor:publish --tag=statamic-secret-config

How to Use

After installing the addon, you can generate the keys with the command below. You can use the same command to re-generate them for any reason:

php please secret:generate

You will be prompted to overwrite the keys if files with the configured names already exist.

You should NOT commit the keys to version control. Nor should you place them anywhere publicly accessible.

Once installed, a new Secret fieldtype is selectable from the field picker.

Disclaimer: I've borrowed some code regarding key generation from the excellent Eloquent Encryption package by @RichardStyles. Go check it out!