Skip to content

Instantly share code, notes, and snippets.

@justenj
Created April 13, 2017 06:39
Show Gist options
  • Save justenj/c89735892300045658573a6fddd34ae4 to your computer and use it in GitHub Desktop.
Save justenj/c89735892300045658573a6fddd34ae4 to your computer and use it in GitHub Desktop.
RolePermissionSeeder
<?php
use Illuminate\Database\Seeder;
use App\Role;
use App\Permission;
class RolePermissionSeeder extends Seeder
{
protected $roles = [];
protected $permissions = [];
/**
* Run the database seeds.
*
* @return void
*/
public function __construct()
{
$this->roles = [
'admin',
'manager',
'writer'
];
$this->permissions = [
'admin' => [
'role_create',
'role_read',
'role_update',
'role_delete',
'permission_create',
'permission_read',
'permission_update',
'permission_delete',
'project_create',
'project_read',
'project_update',
'project_delete',
'stage_create',
'stage_read',
'stage_update',
'stage_delete',
'post_create',
'post_read',
'post_update',
'post_delete',
'post_check',
'donor_create',
'donor_read',
'donor_update',
'donor_delete',
'account_create',
'account_read',
'account_update',
'account_delete',
'site_read',
// '_create',
// '_read',
// '_update',
// '_delete',
],
'manager' => [
'post_create',
'post_read',
'post_update',
'post_check',
'donor_create',
'donor_update',
'donor_read',
'site_read',
],
'writer' => [
'post_create',
'post_read',
],
];
}
public function run()
{
foreach ($this->permissions as $roleName => $permissionsArray) {
$role = Role::firstOrCreate(['name' => $roleName]);
$role->perms()->sync([]);
$rolePermissionsIDs = [];
foreach ($permissionsArray as $permissionName) {
$permission = Permission::firstOrCreate(['name' => $permissionName]);
$rolePermissionsIDs[] = $permission->id;
}
$role->perms()->sync($rolePermissionsIDs);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment