burakdalyanda / cipher-weave
A seamless security layer for Laravel applications that automatically decrypts incoming requests and encrypts outgoing responses to ensure data integrity and confidentiality.
Requires
- php: ^8.2
- illuminate/contracts: ^10.0|^11.0|^12.0
- illuminate/encryption: ^10.0|^11.0|^12.0
- illuminate/support: ^10.0|^11.0|^12.0
Requires (Dev)
- orchestra/testbench: ^8.0|^9.0|^10.0
- phpunit/phpunit: ^10.0|^11.0
This package is auto-updated.
Last update: 2026-03-06 10:58:13 UTC
README
CipherWeave is a Laravel middleware package designed to encrypt outgoing responses and decrypt incoming requests, ensuring your data remains secure throughout its journey.
Features
- Seamless Integration: Easily integrate CipherWeave into your Laravel project.
- Modern PHP & Laravel: Built for PHP 8.2+ and Laravel 10, 11, and 12.
- Encryption & Decryption: Automatically encrypt responses and decrypt requests.
- Configurable Security: Customize encryption settings to fit your security needs.
- Artisan Command: Easily generate and set your encryption key.
- Facade Support: Simple access to encryption methods via
CipherWeaveFacade.
Requirements
- PHP 8.2 or higher
- Laravel 10.x, 11.x or 12.x
Installation
To install CipherWeave, use Composer:
composer require burakdalyanda/cipher-weave
Configuration
Publish the configuration file to customize encryption settings:
php artisan vendor:publish --tag=cipherweave-config
This will create a config/cipher.php file.
Generate Encryption Key
You must generate an encryption key for the package to work:
php artisan cipherweave:key
This command will generate a key and set it in your .env file as CIPHER_KEY.
Usage
Register Middleware
Laravel 11 & 12
Add the middleware in bootstrap/app.php:
->withMiddleware(function (Middleware $middleware) { $middleware->alias([ 'encrypt.request.response' => \BurakDalyanda\CipherWeave\Middleware\EncryptRequestResponse::class, ]); })
Laravel 10
Add the middleware to your app/Http/Kernel.php file:
protected $routeMiddleware = [ // Other middleware 'encrypt.request.response' => \BurakDalyanda\CipherWeave\Middleware\EncryptRequestResponse::class, ];
Protect Routes
Apply the middleware to your routes in routes/web.php or routes/api.php:
Route::middleware(['encrypt.request.response'])->group(function () { Route::get('/secure-endpoint', [SecureController::class, 'index']); });
Using a Custom Encryption Key for Specific Routes
You can override the default encryption key for specific routes:
Route::middleware(['encrypt.request.response:your-custom-base64-key'])->group(function () { Route::get('/secure-endpoint', [SecureController::class, 'index']); });
Facade Usage
You can use the CipherWeave facade for manual encryption and decryption:
use BurakDalyanda\CipherWeave\Facades\CipherWeave; $encrypted = CipherWeave::encrypt('secret message'); $decrypted = CipherWeave::decrypt($encrypted);
Manual Usage (DI)
You can also inject CipherWeaveInterface:
use BurakDalyanda\CipherWeave\Contracts\CipherWeaveInterface; public function __construct(private CipherWeaveInterface $cipher) {} public function someMethod() { $encrypted = $this->cipher->encrypt(['data' => 'to encrypt']); }
Contributing
Contributions are welcome! Please see the CONTRIBUTING.md file for more details.
License
The MIT License (MIT). Please see the License File for more information.