迁移到新环境时,如何在laravel权限中创建角色和权限?

时间:2019-02-28 13:58:48

标签: laravel

我使用laravel-permission创建角色并分配权限,如此处所述。 https://github.com/spatie/laravel-permission。我系统中的权限是静态的,一旦您创建了一个权限(例如,允许更新博客帖子授予管理员),则用户或外部任何人都无法更改它。

但是,当我想将系统移至另一个环境,回滚更改或想与另一位同事共享代码时,问题就来了。然后,他必须再次运行所有新的权限创建,删除,分配命令。我在这里遵循了两种做法,

  1. 保留一个工匠命令文件来更新/编辑权限,因此每当我将此系统移至其他位置时,都必须运行它们。
  2. 创建另一个路由,并使用它来更新/编辑权限。

但是当我在做这项工作时,这并不是一种好方法。在这种情况下,laravel-permission(类似于数据库迁移)中是否有遵循的最佳实践或任何其他自定义实践?

1 个答案:

答案 0 :(得分:2)

您需要 Laravel Database Seeders (类似这样的东西)。

您可以使用此命令创建播种器-

php artisan make:seeder UsersTableSeeder

Laravel播种器可让您在表中提供一些初始数据。因此,当您与其他人共享代码时,他们将运行此命令来播种数据-

php artisan db:seed

只是一个简单的主意,您可以在播种器类中做类似的事情-

 $add = Permission::create(['name' => 'account.add', 'display_name' => 'Access to account add functionality']);
 $edit = Permission::create(['name' => 'account.edit', 'display_name' => 'Access to account edit functionality']);

 Role::findByName('admin')->givePermissionTo($add);
 Role::findByName('manager')->givePermissionTo($edit);

以上代码是一个示例,说明如何通过按角色名称查找角色来授予其权限。