1. Go to this page and download the library: Download polokij/laravel-vault-env library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
polokij / laravel-vault-env example snippets
Vault::secret('my-secret', ['foo' => 'bar']); // push the secret to Vault
Vault::secret('my-secret'); // pull the secret from Vault - return ['foo' => 'bar']
Vault::instance()->sys->get('some/not/implemented/endpoints'); // call the other endpoints on sys group
Vault::instance()->auth->get('some/not/implemented/endpoints'); // call the other endpoints on auth group
$app = new Illuminate\Foundation\Application(
$_ENV['APP_BASE_PATH'] ?? dirname(__DIR__)
);
$app->afterLoadingEnvironment(function () use ($app) {
// checking is the feature enabled
if (env('VAULT_LOAD_ENV', false)) {
try {
$tenantId = env('TENANT_ID');
// resolving tenant_id by headers - make sure proxy override this header for security reason
if (!$tenantId) {
$headers = collect(getallheaders());
$tenantIdHeader = env('TENANT_ID_HEADER', 'tenant-id');
$tenantId = $headers
->first(fn($value, $key) => $key === $tenantIdHeader
|| strtolower($key) === $tenantIdHeader);
}
if (!$tenantId) {
throw new Exception('Missed Tenant_id ');
}
$envRepository = Env::getRepository();
$vaultDefaultPrefix = $envRepository->get('VAULT_KEY_PREFIX');
$envRepository->set('VAULT_KEY_PREFIX', $vaultDefaultPrefix.'/'.$tenantId);
(new LoadEnvironmentVariablesVault)->bootstrap($app);
} catch (Throwable $e) {
// preparing the logs for exception
$app->instance('config', $config = new Repository([]));
throw $e;
}
}
});
use LaravelVault\LoadEnvironmentVariablesVault;
class Kernel extends ConsoleKernel
{
/**
* The bootstrap classes for the application.
*
* @var string[]
*/
protected $bootstrappers = [
LoadEnvironmentVariables::class,
LoadEnvironmentVariablesVault::class, // <-- added custom bootstrapper
LoadConfiguration::class,
HandleExceptions::class,
RegisterFacades::class,
SetRequestForConsole::class,
RegisterProviders::class,
BootProviders::class,
];
use LaravelVault\LoadEnvironmentVariablesVault;
class Kernel extends HttpKernel
{
/**
* The bootstrap classes for the application.
*
* @var string[]
*/
protected $bootstrappers = [
LoadEnvironmentVariables::class,
LoadEnvironmentVariablesVault::class,
LoadConfiguration::class,
HandleExceptions::class,
RegisterFacades::class,
RegisterProviders::class,
BootProviders::class,
];
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.