diff --git a/app/models/room.rb b/app/models/room.rb
index ec8f9d2e15f4f2d34c2c0d09f8feeed7795d23cb..c56d550b368f6e5a75f44105ad77ae9598e5d2b6 100644
--- a/app/models/room.rb
+++ b/app/models/room.rb
@@ -28,7 +28,7 @@ class Room < ApplicationRecord
   validates :name, presence: true
 
   belongs_to :owner, class_name: 'User', foreign_key: :user_id
-  has_many :shared_access
+  has_many :shared_access, dependent: :destroy
 
   has_one_attached :presentation
 
diff --git a/app/models/user.rb b/app/models/user.rb
index 9efeffcd0bd79582c006a26111f97b16d69d4693..330ebd5b6aff8690d739b3a172fd0954bf830776 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -28,7 +28,7 @@ class User < ApplicationRecord
   before_destroy :destroy_rooms
 
   has_many :rooms
-  has_many :shared_access
+  has_many :shared_access, dependent: :destroy
   belongs_to :main_room, class_name: 'Room', foreign_key: :room_id, required: false
 
   has_and_belongs_to_many :roles, join_table: :users_roles # obsolete
diff --git a/spec/controllers/rooms_controller_spec.rb b/spec/controllers/rooms_controller_spec.rb
index 4733cd49aa7150d5f7ef044b5b19f269d80bc21f..58131c0b316ca6f31c0231bb1988ad19eb21d800 100644
--- a/spec/controllers/rooms_controller_spec.rb
+++ b/spec/controllers/rooms_controller_spec.rb
@@ -535,6 +535,18 @@ describe RoomsController, type: :controller do
       expect(response).to redirect_to(@user.main_room)
     end
 
+    it "should also delete shared rooms" do
+      guest = create(:user)
+      SharedAccess.create(room_id: @secondary_room.id, user_id: guest.id)
+
+      @request.session[:user_id] = @user.id
+
+      delete :destroy, params: { room_uid: @secondary_room }
+
+      expect(Room.exists?(@secondary_room.id)).to be false
+      expect(SharedAccess.exists?(room_id: @secondary_room.id, user_id: guest.id)).to be false
+    end
+
     it "should not delete room if not owner" do
       random_user = create(:user)
       @request.session[:user_id] = random_user.id
diff --git a/spec/controllers/users_controller_spec.rb b/spec/controllers/users_controller_spec.rb
index f20623c22a1324fe5e182a8b675aa8af09540fc8..31f220030982e132a42dd6d4a8dc2e83399b444a 100644
--- a/spec/controllers/users_controller_spec.rb
+++ b/spec/controllers/users_controller_spec.rb
@@ -603,6 +603,20 @@ describe UsersController, type: :controller do
       expect(flash[:alert]).to be_present
       expect(response).to redirect_to(admins_path)
     end
+
+    it "allows user deletion with shared access to rooms" do
+      owner = create(:user)
+      guest = create(:user)
+      room  = create(:room, owner: owner)
+      SharedAccess.create(room_id: room.id, user_id: guest.id)
+
+      @request.session[:user_id] = guest.id
+      delete :destroy, params: { user_uid: guest.uid }
+
+      expect(User.include_deleted.find_by(uid: guest.uid)).to be_nil
+      expect(SharedAccess.exists?(room_id: room.id, user_id: guest.id)).to be false
+      expect(response).to redirect_to(root_path)
+    end
   end
 
   describe "GET | POST #terms" do