我使用laravel-permission创建角色并分配权限,如此处所述。 https://github.com/spatie/laravel-permission。我系统中的权限是静态的,一旦您创建了一个权限(例如,允许更新博客帖子授予管理员),则用户或外部任何人都无法更改它。
但是,当我想将系统移至另一个环境,回滚更改或想与另一位同事共享代码时,问题就来了。然后,他必须再次运行所有新的权限创建,删除,分配命令。我在这里遵循了两种做法,
但是当我在做这项工作时,这并不是一种好方法。在这种情况下,laravel-permission(类似于数据库迁移)中是否有遵循的最佳实践或任何其他自定义实践?
答案 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);
以上代码是一个示例,说明如何通过按角色名称查找角色来授予其权限。