$data['name'], 'email' => $data['email'], 'password' => Hash::make($data['password']), ]); if (isset($data['roles'])) { $user->roles()->sync($data['roles']); } return $user; }); } /** * Update an existing user. * * @param User $user The user to update. * @param array $data Data to update the user. * @return bool True if successful. */ public function update(User $user, array $data): bool { return DB::transaction(function () use ($user, $data) { $updateData = [ 'name' => $data['name'], ]; // Only update email if not protected if (!$user->is_protected && isset($data['email'])) { $updateData['email'] = $data['email']; } if (!empty($data['password'])) { $updateData['password'] = Hash::make($data['password']); } $user->update($updateData); if (isset($data['roles'])) { $user->roles()->sync($data['roles']); } else { $user->roles()->sync([]); } return true; }); } /** * Delete a user. * * @param User $user The user to delete. * @return bool True if successful, false if protected. */ public function delete(User $user): bool { if ($user->is_protected) { return false; } return $user->delete(); } }