Skip to content

Commit 8f15d18

Browse files
authored
[v6] Sync v5 fix: Avoid triggering eloquent.retrieved event #2498
1 parent 982d4d4 commit 8f15d18

File tree

3 files changed

+11
-17
lines changed

3 files changed

+11
-17
lines changed

src/PermissionRegistrar.php

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -354,12 +354,11 @@ private function getSerializedRoleRelation($permission): array
354354

355355
private function getHydratedPermissionCollection(): Collection
356356
{
357-
$permissionClass = $this->getPermissionClass();
358-
$permissionInstance = new $permissionClass();
357+
$permissionInstance = new ($this->getPermissionClass())();
359358

360359
return Collection::make(array_map(
361-
fn ($item) => $permissionInstance
362-
->newFromBuilder($this->aliasedArray(array_diff_key($item, ['r' => 0])))
360+
fn ($item) => $permissionInstance->newInstance([], true)
361+
->setRawAttributes($this->aliasedArray(array_diff_key($item, ['r' => 0])), true)
363362
->setRelation('roles', $this->getHydratedRoleCollection($item['r'] ?? [])),
364363
$this->permissions['permissions']
365364
));
@@ -374,11 +373,11 @@ private function getHydratedRoleCollection(array $roles): Collection
374373

375374
private function hydrateRolesCache(): void
376375
{
377-
$roleClass = $this->getRoleClass();
378-
$roleInstance = new $roleClass();
376+
$roleInstance = new ($this->getRoleClass())();
379377

380378
array_map(function ($item) use ($roleInstance) {
381-
$role = $roleInstance->newFromBuilder($this->aliasedArray($item));
379+
$role = $roleInstance->newInstance([], true)
380+
->setRawAttributes($this->aliasedArray($item), true);
382381
$this->cachedRoles[$role->getKey()] = $role;
383382
}, $this->permissions['roles']);
384383

src/Traits/HasPermissions.php

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -101,10 +101,8 @@ public function scopePermission(Builder $query, $permissions): Builder
101101
{
102102
$permissions = $this->convertToPermissionModels($permissions);
103103

104-
$permissionClass = $this->getPermissionClass();
105-
$permissionKey = (new $permissionClass())->getKeyName();
106-
$roleClass = is_a($this, Role::class) ? static::class : $this->getRoleClass();
107-
$roleKey = (new $roleClass())->getKeyName();
104+
$permissionKey = (new ($this->getPermissionClass())())->getKeyName();
105+
$roleKey = (new (is_a($this, Role::class) ? static::class : $this->getRoleClass())())->getKeyName();
108106

109107
$rolesWithPermissions = is_a($this, Role::class) ? [] : array_unique(
110108
array_reduce($permissions, fn ($result, $permission) => array_merge($result, $permission->roles->all()), [])
@@ -132,10 +130,8 @@ public function scopeWithoutPermission(Builder $query, $permissions, $debug = fa
132130
{
133131
$permissions = $this->convertToPermissionModels($permissions);
134132

135-
$permissionClass = $this->getPermissionClass();
136-
$permissionKey = (new $permissionClass())->getKeyName();
137-
$roleClass = is_a($this, Role::class) ? static::class : $this->getRoleClass();
138-
$roleKey = (new $roleClass())->getKeyName();
133+
$permissionKey = (new ($this->getPermissionClass())())->getKeyName();
134+
$roleKey = (new (is_a($this, Role::class) ? static::class : $this->getRoleClass())())->getKeyName();
139135

140136
$rolesWithPermissions = is_a($this, Role::class) ? [] : array_unique(
141137
array_reduce($permissions, fn ($result, $permission) => array_merge($result, $permission->roles->all()), [])

src/Traits/HasRoles.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -253,8 +253,7 @@ public function hasRole($roles, string $guard = null): bool
253253
}
254254

255255
if (is_int($roles) || PermissionRegistrar::isUid($roles)) {
256-
$roleClass = $this->getRoleClass();
257-
$key = (new $roleClass())->getKeyName();
256+
$key = (new ($this->getRoleClass())())->getKeyName();
258257

259258
return $guard
260259
? $this->roles->where('guard_name', $guard)->contains($key, $roles)

0 commit comments

Comments
 (0)