public function run()
 {
     DB::statement('SET FOREIGN_KEY_CHECKS = 0');
     DB::table('permission_role')->truncate();
     DB::table('role_user')->truncate();
     DB::table('users')->truncate();
     DB::table('roles')->truncate();
     DB::table('permissions')->truncate();
     DB::table('permission_groups')->truncate();
     DB::statement('SET FOREIGN_KEY_CHECKS = 1');
     $faker = Faker\Factory::create();
     //User
     $admin = User::create(['email' => '*****@*****.**', 'name' => '管理员', 'password' => bcrypt('adminadmin')]);
     $test_user = User::create(['email' => '*****@*****.**', 'name' => '测试用户', 'password' => bcrypt('testtest')]);
     //Roles
     $role_admin = Role::create(['name' => 'admin', 'display_name' => '管理员']);
     $role_editor = Role::create(['name' => 'editor', 'display_name' => '编辑']);
     $role_user = Role::create(['name' => 'user', 'display_name' => '普通用户']);
     //Permission&PermissionGroup
     PermissionGroup::create(['name' => '后台']);
     PermissionGroup::create(['name' => 'RBAC', 'parent_id' => 1]);
     Permission::create(['name' => 'dashboard_view', 'display_name' => '首页', 'group_id' => 1]);
     $models = [['route_name' => 'users', 'menu_name' => '帐户', 'group_id' => 3, 'group_pid' => 2], ['route_name' => 'roles', 'menu_name' => '角色', 'group_id' => 4, 'group_pid' => 2], ['route_name' => 'permissions', 'menu_name' => '权限', 'group_id' => 5, 'group_pid' => 2], ['route_name' => 'permissiongroups', 'menu_name' => '权限分组', 'group_id' => 6, 'group_pid' => 2], ['route_name' => 'articles', 'menu_name' => '文章', 'group_id' => 7, 'group_pid' => 1], ['route_name' => 'settings', 'menu_name' => '配置', 'group_id' => 8, 'group_pid' => 1]];
     foreach ($models as $key => $model) {
         PermissionGroup::create(['name' => $model['menu_name'], 'parent_id' => $model['group_pid']]);
         Permission::create(['group_id' => $model['group_id'], 'name' => $model['route_name'] . '_view', 'display_name' => $model['menu_name'] . '菜单']);
         Permission::create(['group_id' => $model['group_id'], 'name' => $model['route_name'] . '_create', 'display_name' => '新建' . $model['menu_name']]);
         Permission::create(['group_id' => $model['group_id'], 'name' => $model['route_name'] . '_update', 'display_name' => '修改' . $model['menu_name']]);
         Permission::create(['group_id' => $model['group_id'], 'name' => $model['route_name'] . '_delete', 'display_name' => '删除' . $model['menu_name']]);
     }
     //Roles Users
     $test_user->roles()->save($role_editor);
     //Roles Users
     // $role_admin->givePermissionTo($permission_admin_user);
 }
 /**
  * @param int $userID
  * @param int $groupID
  */
 public function removeUserGroupPermissions($userID, $groupID)
 {
     // get current user permissions overall
     $permissionUser = $this->createModel()->getPermissionActions($userID)->pluck('permission_action_id', 'permission_id');
     //get group permissions that are being taken away from user
     $permissionGroup = $this->createModel()->getPermissionActions($groupID, null, 'group')->pluck('permission_action_id', 'permission_id');
     //we take those permissions away
     $permissionsDifference = $permissionGroup->intersect($permissionUser);
     if (!$permissionsDifference->isEmpty()) {
         PermissionGroup::deletePermissionGroups($permissionsDifference->keys());
     }
 }