From 84d81863edb47f010564f8f39530cf7ce0727082 Mon Sep 17 00:00:00 2001 From: a6a2f5842 Date: Sun, 21 Sep 2025 11:19:12 +0200 Subject: [PATCH] I allow count limit on assign role --- src/Traits/HasRoles.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Traits/HasRoles.php b/src/Traits/HasRoles.php index 39cdfc8..a613866 100644 --- a/src/Traits/HasRoles.php +++ b/src/Traits/HasRoles.php @@ -55,7 +55,7 @@ trait HasRoles * * @return $this */ - public function assignRole(string|Role $role) + public function assignRole(string|Role $role, int $max_times = 1) { if (is_string($role) && !is_numeric($role)) { $role = config('roles.models.role', \Blax\Roles\Models\Role::class)::firstOrCreate([ @@ -66,6 +66,13 @@ trait HasRoles $role = config('roles.models.role', \Blax\Roles\Models\Role::class)::find($role); } + if ($max_times >= 0) { + $currentCount = $this->roles()->wherePivot('role_id', $role->id)->count(); + if ($currentCount >= $max_times) { + return $this; + } + } + if ($role instanceof Role) { $this->roles()->attach($role); } else {