如何让当前用户执行Laravel命令?

时间:2019-01-14 21:32:08

标签: php laravel laravel-5 artisan

我正在尝试构建自定义配置,该配置会在启动时添加到我的Laravel配置中。我创建了一个artisan命令,允许开发人员将服务器置于“测试”模式和“实时”模式。然后,这应强制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;
    }
}

问题是,我想添加哪个开发人员更改了状态。到目前为止,它很难被编码为“服务器”。是否可以获取执行命令的IP或PC信息以存储在数据库中?

1 个答案:

答案 0 :(得分:0)

如评论中所述,Jaquarh不会尝试进行身份验证。他只想获取执行命令的人的用户名。

您可以使用$processUser = exec('whoami');来获取当前的用户名。 (它将无法在Windows上运行)

但是,请注意,用户名并不总是非常有用。我在工作的笔记本电脑上预装了用户名“ User”。

我可以建议的另一种想法是在使用命令时强制使用“名称”参数。