diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index c9f67a12..7e18e686 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -47,6 +47,14 @@ class UsersController < ApplicationController attrs = user_params.compact_blank.merge(user_params.slice(:archived_at)) attrs.delete(:role) if !role_valid?(attrs[:role]) || current_user == @user + if params.dig(:user, :account_id).present? + account = Account.accessible_by(current_ability).find(params[:user][:account_id]) + + authorize!(:manage, account) + + @user.account = account + end + if @user.update(attrs) redirect_back fallback_location: settings_users_path, notice: 'User has been updated' else diff --git a/app/views/users/_form.html.erb b/app/views/users/_form.html.erb index d134f0a8..8a740d54 100644 --- a/app/views/users/_form.html.erb +++ b/app/views/users/_form.html.erb @@ -19,6 +19,9 @@ <% if f.object != current_user %> <%= render 'role_select', f: %> <% end %> + <% if local_assigns[:extra_fields_html].present? %> + <%= local_assigns[:extra_fields_html] %> + <% end %>