manifoldco / manifold-laravel
一个从您的Manifold账户拉取配置的包
Requires
- php: ~7.0
- illuminate/support: ~5.1
Requires (Dev)
- phpunit/phpunit: >=5.4.3
- squizlabs/php_codesniffer: ^2.3
This package is not auto-updated.
Last update: 2024-09-27 15:25:12 UTC
README
官方Laravel包,将您的Manifold机密连接到您的Laravel应用程序。
介绍
Manifold Laravel包允许您连接到您的Manifold账户,并将您的凭证、密钥、配置等从您的Manifold账户拉取到您的Laravel应用程序中。
安装
- 安装包
composer require manifoldco/manifold-laravel
- 发布配置文件,并从供应商列表中选择
manifoldco\manifold-laravel。
php artisan vendor:publish
-
至少将您的Manifold Bearer token添加到您的
.env文件中,如下所示:MANIFOLD_API_TOKEN=YOUR-TOKEN-HERE -
您可以通过在
.env文件中提供标签来选择性地指定一个项目。
MANIFOLD_PROJECT=YOUR-PROJECT-LABEL
用法
安装和配置完成后,您的Manifold项目/资源的凭证将作为配置拉入您的Laravel应用程序。您可以使用config辅助函数通过资源的标签和凭证的键(它们在Manifold中存在)使用点符号访问凭证。例如,如果您有一个名为API_KEY的凭证的Mailgun资源设置,可以使用config('mailgun.API_KEY')(其中mailgun是资源的标签)来访问它。
请注意,键是区分大小写的。此外,请注意当配置与其他Laravel配置冲突时,Manifold配置将具有优先级。
别名
在某些情况下,您可能希望在配置文件(在您的/config目录中)中使用Manifold的凭证。最明显的用例是在/config/database.php中需要的数据库凭证。由于您无法可靠地使用config()辅助函数从配置文件中访问配置,因此可以在您的config/manifold.php文件中定义别名。别名可以用数组(与标准配置一样)或使用点符号定义数组键。将现有的配置作为键,将Manifold凭证作为值。例如,从Manifold中自定义PostgreSQL服务拉取PostgreSQL密码可能看起来像这样:'database.connections.pgsql.password' => 'custom-pgsql.DB_PASSWORD'。这将从custom-pgsql资源拉取DB_PASSWORD凭证并将其值分配给database.connections.pgsql.password,因此不需要操作您的现有config/database.php文件。
示例
- 您在Manifold中有一个标签为
my-project的项目。您想在控制器方法中访问Mailgun API密钥。您的Mailgun资源名称为mailgun,API密钥凭证为API_KEY。
将以下内容添加到.env
MANIFOLD_API_TOKEN=0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789AB
MANIFOLD_PROJECT=my-project
在您的控制器php文件中
class MyController extends Controller{
public function process_mail(){
$mailgun_key = config('mailgun.API_KEY');
//mail processing logic here
}
}
- 您在Manifold中有一个标签为
my-project的项目。您想存储在Manifold中的自定义服务的PostgreSQL凭证。您的自定义服务名称为custom-pgsql,PostgreSQL凭证键为DB_HOST、DB_DATABASE、DB_USERNAME和DB_PASSWORD。
将以下内容添加到.env
MANIFOLD_API_TOKEN=0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789AB
MANIFOLD_PROJECT=my-project
在您的config/manifold.php
return [
'token' => env('MANIFOLD_API_TOKEN', null),
'project' => env('MANIFOLD_PROJECT', null),
'aliases' => [
/*
note that while you can mix and match array syntax and dot-notation
it's best to use one or the other, this merely illustrates that both
are possible
*/
'database.connections.pgsql.password' => 'custom-pgsql.DB_PASSWORD',
'database' => [
'connections' => [
'pgsql' => [
'host' => 'custom-pgsql.DB_HOST',
'database' => 'custom-pgsql.DB_DATABASE',
'username' => 'custom-pgsql.DB_USERNAME',
]
]
]
],
];
- 您在Manifold中有一个名为
my-project的项目。您希望将JAWS存储的MySQL凭据存储在Manifold中。您的JAWS服务名为jaws-mysql,连接凭据以URL语法表示为JAWSDB_URL。URL语法与Laravel直接不兼容,必须进行解析。为此,您可以传递一个闭包作为别名的值。闭包不接收任何参数,但所有配置都已加载,因此您可以访问并操作Manifold中存储的凭据。
将以下内容添加到.env
MANIFOLD_API_TOKEN=0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789AB
MANIFOLD_PROJECT=my-project
在您的config/manifold.php
return [
'token' => env('MANIFOLD_API_TOKEN', null),
'project' => env('MANIFOLD_PROJECT', null),
'aliases' => [
'database' => [
'connections' => [
'mysql' => [
'host' => function(){
$url = parse_url(config('custom-service.jaws'));
return $url['host'];
},
'password' => function(){
$url = parse_url(config('custom-service.jaws'));
return $url['pass'];
},
'username' => function(){
$url = parse_url(config('custom-service.jaws'));
return $url['user'];
},
'database' => function(){
$url = parse_url(config('custom-service.jaws'));
return substr($url["path"], 1);
}
]
]
]
],
];
注意事项
- Laravel当前加载配置文件的方式是按字母顺序加载。本包依赖于这一特性,以确保Manifold项目的配置在其它配置文件中可用。如果您创建了一个名称在字母顺序上位于Manifold配置文件(
00-manifold.php和01-manifold.php)之前的配置文件,您可能会遇到意外的结果。如果Laravel更改了其加载顺序,请更新此包。 - 现在,本包使用本地文件系统来存储API缓存,而不是使用Laravel的缓存系统,这是为了允许包在加载整个应用程序之前(即在缓存和存储驱动程序可用之前)缓存API数据。如果您在一个无法写入本地磁盘的环境中,将不会提供缓存功能,并且每次启动都会需要API请求。类似地,如果运行应用程序的用户没有对
storage/.manifold.cache.key的写入权限,您将无法使用缓存功能,直到解决这个问题。