Skip to content

Instantly share code, notes, and snippets.

@vinicius73
Last active August 29, 2015 14:22
Show Gist options
  • Save vinicius73/b511a79d0de8c8b5486a to your computer and use it in GitHub Desktop.
Save vinicius73/b511a79d0de8c8b5486a to your computer and use it in GitHub Desktop.
DefenderSeeder.php
<?php
use Illuminate\Support\Collection;
use Illuminate\Database\Seeder;
class DefenderSeeder extends Seeder
{
/**
* @var Collection;
*/
private $roles;
/**
* @var Collection;
*/
private $permissions;
public function run()
{
// Apaga os dados das tabelas
DB::table('permission_role')->truncate();
DB::table('permission_user')->truncate();
DB::table('role_user')->truncate();
DB::table('permissions')->truncate();
DB::table('roles')->truncate();
$this->createRoles();
$this->createPermissions();
$this->sync();
}
private function createRoles()
{
$this->roles = new Collection();
$roles = ['superuser', 'admin', 'manager'];
foreach ($roles as $name):
$this->roles->push($this->defender()->createRole($name));
endforeach;
$this->command->info(count($roles) . ' roles created');
}
private function createPermissions()
{
$this->permissions = new Collection();
$permissions = ['users.create', 'users.update', 'users.destroy'];
foreach ($permissions as $name):
$this->permissions->push($this->defender()->createPermission($name));
endforeach;
$this->command->info(count($permissions) . ' permissions created');
}
private function sync()
{
// ADMIN
$admin = $this->roles->where('name', 'admin')->first();
$admin->permissions()->sync($this->permissions->lists('id')->toArray()); // L5.1 precisa de ->toArray()
// MANAGER
$manager = $this->roles->where('name', 'manager')->first();
$manager->permissions()->sync($this->roles->where('name', 'users.create')->lists('id')->toArray());
}
/**
* @return \Artesaos\Defender\Defender;
*/
private function defender()
{
return app('defender');
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment