代码之家  ›  专栏  ›  技术社区  ›  Jaquarh

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

  •  0
  • Jaquarh  · 技术社区  · 5 年前

    我正在尝试构建一个自定义配置,在启动时将其添加到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 回复  |  直到 5 年前
        1
  •  0
  •   SystemGlitch    5 年前

    正如评论中所说,Jaquarh不会尝试进行身份验证。他只想得到运行命令的perso的用户名。

    你可以使用 $processUser = exec('whoami'); 获取当前用户名。(在窗户上不起作用)

    但是,要小心,用户名并不总是很有用的。我工作的笔记本电脑预装了一个用户名“user”。

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