From 20162a49314dd74b640a09b347f5bc0cdf36689a Mon Sep 17 00:00:00 2001 From: a6a2f5842 Date: Wed, 18 Jun 2025 19:02:51 +0200 Subject: [PATCH] I hasRole trait --- phpunit.xml.dist | 41 +++++++++++++++++++-------------------- src/Models/RoleMember.php | 4 ++++ src/Traits/HasRoles.php | 5 +++-- 3 files changed, 27 insertions(+), 23 deletions(-) diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 11e605a..4a49487 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,23 +1,22 @@ - - - - src/ - - - - - tests - - - - - - - - + + + + src/ + + + + + tests + + + + + + \ No newline at end of file diff --git a/src/Models/RoleMember.php b/src/Models/RoleMember.php index 7d459d0..016752c 100644 --- a/src/Models/RoleMember.php +++ b/src/Models/RoleMember.php @@ -14,11 +14,15 @@ class RoleMember extends Model 'member', 'context', 'expires_at', + 'created_at', + 'updated_at', ]; protected $casts = [ 'context' => 'array', 'expires_at' => 'datetime', + 'created_at' => 'datetime', + 'updated_at' => 'datetime', ]; public function __construct(array $attributes = []) diff --git a/src/Traits/HasRoles.php b/src/Traits/HasRoles.php index 6d21211..b0fa4e3 100644 --- a/src/Traits/HasRoles.php +++ b/src/Traits/HasRoles.php @@ -35,13 +35,14 @@ trait HasRoles } elseif (is_numeric($role)) { $role = config('roles.models.role', \Blax\Roles\Models\Role::class)::find($role); } elseif ($role instanceof Role) { - return $this->roles()->where('id', $role->id)->exists(); + // use pivot column to avoid ambiguous `id` + return $this->roles()->wherePivot('role_id', $role->id)->exists(); } else { throw new \InvalidArgumentException('Role must be a string, numeric ID, or an instance of Role.'); } return $role - ? $this->roles()->where('id', $role->id)->exists() + ? $this->roles()->wherePivot('role_id', $role->id)->exists() : false; }