【问题标题】:Seeders in this scenario这种情况下的播种机
【发布时间】:2021-12-11 08:52:44
【问题描述】:

我在services.admin.key 中配置了一个电子邮件,其中包含应用管理员的电子邮件。

该应用只有一名管理员。您是否知道最好的方法,以便可以从 Git 访问代码的人可以运行命令来配置用户?例如,如果它是一个包含三列的表:

name: admin
email: the email configured in`services.admin.key`
password: sometestpass

如何允许有权访问该项目的人运行某些命令来创建一个具有这些详细信息的用户?你知道最好的方法是什么吗?如果应该使用播种机或其他方法,我怀疑如何正确处理?

例如,我在某些视图中使用的用户模型上有这个方法来检查当前用户是否是管理员。

 public function isAdministrator ()
 {
     if ($this->email == config('services.admin.key')) 
     {
            return true;
     }

     return false;
 }

【问题讨论】:

  • 最流行的方法是在用户表上设置一个布尔列,例如 is_admin。然后你做类似的事情 $this->is_admin
  • 谢谢,但在这种情况下,它应该只存在一个管理员,在使用项目之前应该配置。因此,该列对于所有用户都将为空,除非对于一个用户,即之前应该配置的管理员。
  • 如果您确定要这样做,创建该用户的最佳方法是迁移。您可以阅读配置以获取其电子邮件和密码。迁移只运行一次,因此您只需要一个管理员。
  • 谢谢,但迁移只是为了创建表的列,对吗?它也可以用来创建初始管理员用户?谢谢!
  • 是的!它也可以用于从数据库中添加/更新/删除数据。

标签: laravel laravel-config


【解决方案1】:

如果您谈论本地数据库上的新项目,最好为管理员用户准备好播种器。(不是远程数据库)。假设我可以访问 git repo 我可以克隆项目,并运行 composer install 以获取依赖项,而不是 PHP 命令 php artisan migrate --seed 最好让播种机准备好创建管理员。要制作播种机,您只需要php artisan make:seed AdminSeeder 并在 AdminSeeder 文件中写入如下内容:

User::create(['name' => 'admin', 'email' => config('services.admin.key')),'password' => bcrypt('sometestpass'),]);

比在 Database/seeders/DatabaseSeeder.php 中写入 $this->call(AdminSeeder::class); 就是这样。现在,当有人获得新项目时,它会执行 3 个命令来准备好一切。

  1. composer install
  2. php artisan migrate --seed
  3. php artisan key:generate

希望我能正确理解您的需求。

【讨论】:

  • 谢谢!!你能更好地解释一下为什么“php artisan key:generate”是必要的吗?
  • laravel.com/docs/7.x/installation 中更好地解释,但简而言之:如果未设置应用程序密钥,您的用户会话和其他加密数据将不安全!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-24
  • 1970-01-01
  • 1970-01-01
  • 2018-06-24
  • 2013-04-23
相关资源
最近更新 更多