如何让当前用户执行 Laravel 命令?
How can I get the current user executing a Laravel Command?
我正在尝试构建一个自定义配置,该配置会在启动时添加到我的 Laravel 配置中。我创建了一个 artisan 命令,允许开发人员将服务器置于 'test' 模式和 'live' 模式。这应该会强制 API 使用测试密钥而不是有效的密钥。
public function handle()
{
switch(strtoupper($this->argument('m'))) {
case 'LIVE':
\DB::table('server_mode')->where('id', 1)->update([
'mode' => true,
'verified_by' => 'Server'
]);
$this->info('Server is now in LIVE mode');
break;
case 'TEST':
\DB::table('server_mode')->where('id', 1)->update([
'mode' => false,
'verified_by' => 'Server'
]);
$this->info('Server is now in TEST mode');
break;
default:
$this->error('Please enter either LIVE or TEST');
break;
}
}
问题是,我想添加哪个开发者更改了状态。到目前为止,它被硬编码为 'Server'。是否可以获取执行命令的IP或PC信息存入数据库?
如评论中所述,Jaquarh 不会尝试进行身份验证。他只是想获得 运行 命令执行者的用户名。
您可以使用$processUser = exec('whoami');
获取当前用户名。 (它不适用于 windows)
但是,请注意,用户名并不总是提供很多信息。我工作的笔记本电脑预装了用户名 "User"。
我可以建议的另一个想法是在使用命令时强制使用 "name" 参数。
我正在尝试构建一个自定义配置,该配置会在启动时添加到我的 Laravel 配置中。我创建了一个 artisan 命令,允许开发人员将服务器置于 'test' 模式和 'live' 模式。这应该会强制 API 使用测试密钥而不是有效的密钥。
public function handle()
{
switch(strtoupper($this->argument('m'))) {
case 'LIVE':
\DB::table('server_mode')->where('id', 1)->update([
'mode' => true,
'verified_by' => 'Server'
]);
$this->info('Server is now in LIVE mode');
break;
case 'TEST':
\DB::table('server_mode')->where('id', 1)->update([
'mode' => false,
'verified_by' => 'Server'
]);
$this->info('Server is now in TEST mode');
break;
default:
$this->error('Please enter either LIVE or TEST');
break;
}
}
问题是,我想添加哪个开发者更改了状态。到目前为止,它被硬编码为 'Server'。是否可以获取执行命令的IP或PC信息存入数据库?
如评论中所述,Jaquarh 不会尝试进行身份验证。他只是想获得 运行 命令执行者的用户名。
您可以使用$processUser = exec('whoami');
获取当前用户名。 (它不适用于 windows)
但是,请注意,用户名并不总是提供很多信息。我工作的笔记本电脑预装了用户名 "User"。
我可以建议的另一个想法是在使用命令时强制使用 "name" 参数。