{"id":20742668,"url":"https://github.com/itinerisltd/gfe-preset","last_synced_at":"2025-10-30T06:17:33.792Z","repository":{"id":56994281,"uuid":"170494047","full_name":"ItinerisLtd/gfe-preset","owner":"ItinerisLtd","description":"Utilities for Gravity Forms Encrypted Fields","archived":false,"fork":false,"pushed_at":"2022-11-23T18:50:28.000Z","size":18,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-24T05:16:31.854Z","etag":null,"topics":["functionality-plugin","wordpress","wordpress-muplugin"],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ItinerisLtd.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-02-13T11:10:01.000Z","updated_at":"2022-11-23T08:48:29.000Z","dependencies_parsed_at":"2022-08-21T13:20:40.864Z","dependency_job_id":null,"html_url":"https://github.com/ItinerisLtd/gfe-preset","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ItinerisLtd%2Fgfe-preset","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ItinerisLtd%2Fgfe-preset/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ItinerisLtd%2Fgfe-preset/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ItinerisLtd%2Fgfe-preset/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ItinerisLtd","download_url":"https://codeload.github.com/ItinerisLtd/gfe-preset/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250566523,"owners_count":21451234,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["functionality-plugin","wordpress","wordpress-muplugin"],"created_at":"2024-11-17T07:06:58.742Z","updated_at":"2025-10-30T06:17:28.746Z","avatar_url":"https://github.com/ItinerisLtd.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GFE Preset\n\n[![Packagist Version](https://img.shields.io/packagist/v/itinerisltd/gfe-preset.svg)](https://packagist.org/packages/itinerisltd/gfe-preset)\n[![PHP from Packagist](https://img.shields.io/packagist/php-v/itinerisltd/gfe-preset.svg)](https://packagist.org/packages/itinerisltd/gfe-preset)\n[![Packagist Downloads](https://img.shields.io/packagist/dt/itinerisltd/gfe-preset.svg)](https://packagist.org/packages/itinerisltd/gfe-preset)\n[![GitHub License](https://img.shields.io/github/license/itinerisltd/gfe-preset.svg)](https://github.com/ItinerisLtd/gfe-preset/blob/master/LICENSE)\n[![Hire Itineris](https://img.shields.io/badge/Hire-Itineris-ff69b4.svg)](https://www.itineris.co.uk/contact/)\n\n\u003c!-- START doctoc generated TOC please keep comment here to allow auto update --\u003e\n\u003c!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --\u003e\n\n\n- [Goal](#goal)\n- [Minimum Requirements](#minimum-requirements)\n- [Installation](#installation)\n- [Usage](#usage)\n  - [Normal WordPress](#normal-wordpress)\n  - [Bedrock](#bedrock)\n- [Warnings](#warnings)\n- [FAQ](#faq)\n  - [Why `GFE_PRESET_WEBSITE_KEY` and `GFE_PRESET_ENCRYPTION_KEY` must be defined?](#why-gfe_preset_website_key-and-gfe_preset_encryption_key-must-be-defined)\n  - [Should I reuse `GFE_PRESET_WEBSITE_KEY` and `GFE_PRESET_ENCRYPTION_KEY`?](#should-i-reuse-gfe_preset_website_key-and-gfe_preset_encryption_key)\n  - [I have installed this plugin. Does it mean my WordPress site is *unhackable*?](#i-have-installed-this-plugin-does-it-mean-my-wordpress-site-is-unhackable)\n  - [Will you add support for older PHP versions?](#will-you-add-support-for-older-php-versions)\n  - [It looks awesome. Where can I find some more goodies like this?](#it-looks-awesome-where-can-i-find-some-more-goodies-like-this)\n  - [This isn't on wp.org. Where can I give a ⭐️⭐️⭐️⭐️⭐️ review?](#this-isnt-on-wporg-where-can-i-give-a-%EF%B8%8F%EF%B8%8F%EF%B8%8F%EF%B8%8F%EF%B8%8F-review)\n- [Testing](#testing)\n- [Feedback](#feedback)\n- [Change Log](#change-log)\n- [Security](#security)\n- [Credits](#credits)\n- [License](#license)\n\n\u003c!-- END doctoc generated TOC please keep comment here to allow auto update --\u003e\n\n## Goal\n\nBy default [Gravity Forms Encrypted Fields](https://codecanyon.net/item/gravity-forms-encrypted-fields/18564931) generate **website key** automatically on web servers which violates [12-factor principle](https://12factor.net/) and makes backing up difficult.\n\n[GFE Preset](https://github.com/ItinerisLtd/gfe-preset) overrides the **website key** via PHP constants so that the key always in a *known state*.\n\nMoreover, encrypting with *unknown* encryption keys means you can't decrypt if disasters happen. Better safe than worry. GFE Preset triggers [`wp_die`](https://codex.wordpress.org/Function_Reference/wp_die) if [required constants](https://github.com/ItinerisLtd/gfe-preset/tree/better-checks#usage) not defined.\n\nBesides, [GFE Preset](https://github.com/ItinerisLtd/gfe-preset) provides similar overrides to:\n\n- CodeCanyon license key\n- encryption key (also known as encryption password)\n\n## Minimum Requirements\n\n- PHP v7.2\n- WordPress v5.0\n- [Gravity Forms Encrypted Fields](https://codecanyon.net/item/gravity-forms-encrypted-fields/18564931) v4.4.2\n\n## Installation\n\n```sh-session\n$ composer require itinerisltd/gfe-preset\n```\n\n## Usage\n\n### Normal WordPress\n\nDefine these 3 constants in `wp-config.php`:\n\n```php\n// Required:\ndefine('GFE_PRESET_WEBSITE_KEY', 'aaa');\ndefine('GFE_PRESET_ENCRYPTION_KEY', 'bbb'); // Also kown as **encryption password**\n\n// Optional:\ndefine('GFE_PRESET_LICENSE_KEY', 'zzz');\n```\n\n### [Bedrock](https://github.com/roots/bedrock)\n\nDefine these 3 constants in `config/application.php`:\n\n```php\n// Required:\nConfig::define('GFE_PRESET_WEBSITE_KEY', 'aaa');\nConfig::define('GFE_PRESET_ENCRYPTION_KEY', 'bbb'); // Also kown as **encryption password**\n\n// Optional:\nConfig::define('GFE_PRESET_LICENSE_KEY', 'zzz');\n```\n\n## Warnings\n\n- You must save [Gravity Forms Encrypted Fields](https://codecanyon.net/item/gravity-forms-encrypted-fields/18564931) setting page whenever:\n  - installing/activating the plugins\n  - updating the plugins\n  - changing the [constants](#usage)\n\n- You should run \"ENCRYPTION TESTING AND VERIFICATION\" on the plugin settings page\n\n- You should backup all the [constants](#usage)\n\n- You should backup **website key and encryption password** shown on the plugin settings page\n  - Without both **website key and encryption password**, you can't decrypt the data\n\n- You should practice backing up and restoring the whole WordPress installation from time to time\n\n- Normal [Gravity Forms Security Best Practices](https://docs.gravityforms.com/security/) still applies\n\n- [Gravity Forms Encrypted Fields](https://codecanyon.net/item/gravity-forms-encrypted-fields/18564931) backup, verification, usage procedures still apply\n  - You must read the [plugin readme](https://codecanyon.net/item/gravity-forms-encrypted-fields/18564931) and notices on the plugin setting page in full, and follow the instructions\n\n## FAQ\n\n### Why `GFE_PRESET_WEBSITE_KEY` and `GFE_PRESET_ENCRYPTION_KEY` must be defined?\n\nThis is to prevent encrypting with unknown (not backed up) website key and encryption key, which end up with a *unrestorable database* (data is encrtpyed but you can't decrypt them).\n\n### Should I reuse `GFE_PRESET_WEBSITE_KEY` and `GFE_PRESET_ENCRYPTION_KEY`?\n\nNo!\n\nEach WordPress installation (enviroment) should have its own set of `GFE_PRESET_WEBSITE_KEY` and `GFE_PRESET_ENCRYPTION_KEY`, i.e: staging and production servers should use different keys.\n\n### I have installed this plugin. Does it mean my WordPress site is *unhackable*?\n\nNo website is *unhackable*.\n\nTo have a secure WordPress site, you have to keep all these up-to-date:\n\n- WordPress core\n- PHP\n- this plugin\n- all other WordPress themes and plugins\n- everything on the server\n- other security practices\n- your mindset\n\n### Will you add support for older PHP versions?\n\nNever! This plugin will only works on [actively supported PHP versions](https://secure.php.net/supported-versions.php).\n\nDon't use it on **end of life** or **security fixes only** PHP versions.\n\n### It looks awesome. Where can I find some more goodies like this?\n\n- Articles on [Itineris' blog](https://www.itineris.co.uk/blog/)\n- More projects on [Itineris' GitHub profile](https://github.com/itinerisltd)\n- More plugins on [Itineris' wp.org profile](https://profiles.wordpress.org/itinerisltd/#content-plugins)\n- Follow [@itineris_ltd](https://twitter.com/itineris_ltd) and [@TangRufus](https://twitter.com/tangrufus) on Twitter\n- Hire [Itineris](https://www.itineris.co.uk/services/) to build your next awesome site\n\n### This isn't on wp.org. Where can I give a ⭐️⭐️⭐️⭐️⭐️ review?\n\nThanks! Glad you like it. It's important to let my boss knows somebody is using this project. Instead of giving reviews on wp.org, consider:\n\n- tweet something good with mentioning [@itineris_ltd](https://twitter.com/itineris_ltd) and [@TangRufus](https://twitter.com/tangrufus)\n- star this [Github repo](https://github.com/ItinerisLtd/gfe-preset)\n- watch this [Github repo](https://github.com/ItinerisLtd/gfe-preset)\n- write blog posts\n- submit pull requests\n- [hire Itineris](https://www.itineris.co.uk/services/)\n\n## Testing\n\n```bash\n# Code style checks.\n$ composer style:check\n```\n\nPull requests without tests will not be accepted!\n\n## Feedback\n\n**Please provide feedback!** We want to make this library useful in as many projects as possible.\nPlease submit an [issue](https://github.com/ItinerisLtd/gfe-preset/issues/new) and point out what you do and don't like, or fork the project and make suggestions.\n**No issue is too small.**\n\n## Change Log\n\nPlease see [CHANGELOG](./CHANGELOG.md) for more information on what has changed recently.\n\n## Security\n\nIf you discover any security related issues, please email [hello@itineris.co.uk](mailto:hello@itineris.co.uk) instead of using the issue tracker.\n\n## Credits\n\n[GFE Preset](https://github.com/ItinerisLtd/gfe-preset) is a [Itineris Limited](https://www.itineris.co.uk/) project created by [Tang Rufus](https://typist.tech).\n\nFull list of contributors can be found [here](https://github.com/ItinerisLtd/gfe-preset/graphs/contributors).\n\n## License\n\n[GFE Preset](https://github.com/ItinerisLtd/gfe-preset) is licensed under the [MIT License](https://opensource.org/licenses/MIT).\nPlease see [License File](./LICENSE) for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitinerisltd%2Fgfe-preset","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fitinerisltd%2Fgfe-preset","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitinerisltd%2Fgfe-preset/lists"}