public function grantInheritanceTo(\App\Role $successor, \Illuminate\Database\Eloquent\Collection $predecessors)
{
$predecessors->each(function ($predecessor) use($successor) {
$permissions = $predecessor->permissions()->get();
if (empty($permissions)) {
dump('Tried to grant [' . $successor->name . '] The permissions equal to those of [' . $predecessor->name . '] but the latter seems to have none granted.');
} else {
foreach ($predecessor->permissions()->get() as $permission) {
if ($permission instanceof \App\Permission) {
dump('[' . $successor->name . '] Inherited [' . $permission->name . '] Thru [' . $predecessor->name . ']');
$successor->givePermissionTo($permission);
} else {
$permission = \App\Permission::where(['name' => $permission])->first();
dump('[' . $successor->name . '] Inherited [' . $permission->name . '] Thru [' . $predecessor->name . ']');
$successor->givePermissionTo($permission);
}
}
}
});
}