From a2e024c1b5dde4e477142416bd42ea822ea05bf0 Mon Sep 17 00:00:00 2001 From: Mike Dalessio Date: Tue, 2 Dec 2025 14:22:50 -0500 Subject: [PATCH] Disconnect action cable when user is deactivated ref: https://app.fizzy.do/5986089/cards/2785 --- app/models/user.rb | 6 ++++++ test/models/user_test.rb | 5 ++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 68df97a65..d70a260ea 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -24,10 +24,16 @@ class User < ApplicationRecord transaction do accesses.destroy_all update! active: false, identity: nil + close_remote_connections end end def setup? name != identity.email_address end + + private + def close_remote_connections + ActionCable.server.remote_connections.where(current_user: self).disconnect(reconnect: false) + end end diff --git a/test/models/user_test.rb b/test/models/user_test.rb index 5ffc5db56..36b0e7986 100644 --- a/test/models/user_test.rb +++ b/test/models/user_test.rb @@ -25,7 +25,10 @@ class UserTest < ActiveSupport::TestCase test "deactivate" do assert_changes -> { users(:jz).active? }, from: true, to: false do assert_changes -> { users(:jz).accesses.count }, from: 1, to: 0 do - users(:jz).deactivate + users(:jz).tap do |user| + user.stubs(:close_remote_connections).once + user.deactivate + end end end end