From 80f60a5d88dc61192ed4840628c70562da712ffd Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Wed, 12 Nov 2025 20:19:57 +0200 Subject: [PATCH] re-invite archived user --- app/controllers/users_controller.rb | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 39cbc223..129a90c0 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -24,10 +24,18 @@ class UsersController < ApplicationController def edit; end def create - if User.accessible_by(current_ability).exists?(email: @user.email) - @user.errors.add(:email, I18n.t('already_exists')) + existing_user = User.accessible_by(current_ability).find_by(email: @user.email) - return render turbo_stream: turbo_stream.replace(:modal, template: 'users/new'), status: :unprocessable_content + if existing_user + if existing_user.archived_at? && authorize!(:manage, existing_user) && authorize!(:manage, @user.account) + existing_user.assign_attributes(@user.slice(:first_name, :last_name, :role, :account_id)) + existing_user.archived_at = nil + @user = existing_user + else + @user.errors.add(:email, I18n.t('already_exists')) + + return render turbo_stream: turbo_stream.replace(:modal, template: 'users/new'), status: :unprocessable_content + end end @user.password = SecureRandom.hex if @user.password.blank?