Last active
August 29, 2015 14:22
-
-
Save vinicius73/b511a79d0de8c8b5486a to your computer and use it in GitHub Desktop.
DefenderSeeder.php
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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