diff --git a/src/Assignment.php b/src/Assignment.php index 968f3d4..1b15215 100644 --- a/src/Assignment.php +++ b/src/Assignment.php @@ -69,7 +69,7 @@ public function removeAllSuperAdminUsersFromOtherRoles($assignedUsers) public function assignUsersToRoles($assignedUsers) { foreach ($assignedUsers as $role => $users) { - if ($role === 'SuperAdmin' || $role === 'Member') { + if ($role === 'Member') { continue; } @@ -81,13 +81,15 @@ public function assignUsersToRoles($assignedUsers) } } - public function removeAllUsersFromRoles() + public function removeUsersFromRoles($assignedUsers) { $this->roles - ->with('users') + ->with("users") ->get() - ->each(function ($role) { - $role->users()->detach(); + ->each(function ($role) use ($assignedUsers) { + $role->users() + ->whereIn("id", $assignedUsers) + ->detach(); }); } diff --git a/src/Http/Requests/CreateAssignmentRequest.php b/src/Http/Requests/CreateAssignmentRequest.php index c6baa71..d0753cb 100644 --- a/src/Http/Requests/CreateAssignmentRequest.php +++ b/src/Http/Requests/CreateAssignmentRequest.php @@ -23,7 +23,7 @@ public function process(): void { $assignmentClass = config("genealabs-laravel-governor.models.assignment"); $assignment = new $assignmentClass; - $assignment->removeAllUsersFromRoles(); + $assignment->removeUsersFromRoles($this->users); $assignment->assignUsersToRoles($this->users); $assignment->addAllUsersToMemberRole(); }