From 2f40f95f7754906ae3ea95e618d49b9ac215df62 Mon Sep 17 00:00:00 2001 From: Sojan Jose Date: Wed, 4 Jun 2025 21:37:05 -0500 Subject: [PATCH] fix: broken link in admin account user list (#11661) - Add a dummy link for account users page that redirect back to user page - move common account user form in user and account super admin pages to a partial fixes: #10757 --- .../super_admin/account_users_controller.rb | 7 +++ app/views/super_admin/accounts/show.html.erb | 50 +---------------- .../shared/_account_user_form.html.erb | 54 +++++++++++++++++++ app/views/super_admin/users/show.html.erb | 40 +------------- config/routes.rb | 2 +- 5 files changed, 64 insertions(+), 89 deletions(-) create mode 100644 app/views/super_admin/shared/_account_user_form.html.erb diff --git a/app/controllers/super_admin/account_users_controller.rb b/app/controllers/super_admin/account_users_controller.rb index b210dea19..d665b5684 100644 --- a/app/controllers/super_admin/account_users_controller.rb +++ b/app/controllers/super_admin/account_users_controller.rb @@ -2,6 +2,13 @@ class SuperAdmin::AccountUsersController < SuperAdmin::ApplicationController # Overwrite any of the RESTful controller actions to implement custom behavior # For example, you may want to send an email after a foo is updated. # + + # Since account/user page - account user role attribute links to the show page + # Handle with a redirect to the user show page + def show + redirect_to super_admin_user_path(requested_resource.user) + end + def create resource = resource_class.new(resource_params) authorize_resource(resource) diff --git a/app/views/super_admin/accounts/show.html.erb b/app/views/super_admin/accounts/show.html.erb index bb22735f1..f7feffa05 100644 --- a/app/views/super_admin/accounts/show.html.erb +++ b/app/views/super_admin/accounts/show.html.erb @@ -91,55 +91,7 @@ as well as a link to its edit page. -
- <% account_user_page = - Administrate::Page::Form.new(AccountUserDashboard.new, AccountUser.new) %> - <%= form_for([namespace, account_user_page.resource], html: { class: "form" }) do |f| %> - <% if account_user_page.resource.errors.any? %> -
-

- <%= t( - "administrate.form.errors", - pluralized_errors: - pluralize( - account_user_page.resource.errors.count, - t("administrate.form.error"), - ), - resource_name: display_resource_name(account_user_page.resource_name), - ) %> -

- -
    - <% account_user_page.resource.errors.full_messages.each do |message| %> -
  • <%= message %>
  • - <% end %> -
-
- <% end %> - - <% account_user_page.attributes.each do |title, attributes| -%> - <% attributes.each do |attribute| %> - <% if attribute.name == "account" %> - <%= f.hidden_field("account_id", value: page.resource.id) %> - <% else %> -
- <%= render_field attribute, f: f %> -
- <% end %> - <% end %> - <% end -%> - -
- <%= f.submit %> -
- <% end %> - -
+ <%= render 'super_admin/shared/account_user_form', page: page, namespace: namespace, resource_type: 'account' %> <%= render partial: "seed_data", locals: { page: page } %> diff --git a/app/views/super_admin/shared/_account_user_form.html.erb b/app/views/super_admin/shared/_account_user_form.html.erb new file mode 100644 index 000000000..5179571b6 --- /dev/null +++ b/app/views/super_admin/shared/_account_user_form.html.erb @@ -0,0 +1,54 @@ +<%# +# Account User Form Partial + +This partial renders the account user creation form. +Used by both account and user show pages. + +## Local variables: + +- `page`: The Administrate page object (Account or User) +- `namespace`: The current namespace (usually :super_admin) +- `resource_type`: Either 'account' or 'user' to determine hidden field +%> + +
+ <% account_user_page = Administrate::Page::Form.new(AccountUserDashboard.new, AccountUser.new) %> + <%= form_for([namespace, account_user_page.resource], html: { class: "form" }) do |f| %> + <% if account_user_page.resource.errors.any? %> +
+

+ <%= t( + "administrate.form.errors", + pluralized_errors: pluralize( + account_user_page.resource.errors.count, + t("administrate.form.error") + ), + resource_name: display_resource_name(account_user_page.resource_name) + ) %> +

+ +
    + <% account_user_page.resource.errors.full_messages.each do |message| %> +
  • <%= message %>
  • + <% end %> +
+
+ <% end %> + + <% account_user_page.attributes.each do |title, attributes| -%> + <% attributes.each do |attribute| %> + <% if attribute.name == resource_type %> + <%= f.hidden_field("#{resource_type}_id", value: page.resource.id) %> + <% else %> +
+ <%= render_field attribute, f: f %> +
+ <% end %> + <% end %> + <% end -%> + +
+ <%= f.submit %> +
+ <% end %> +
\ No newline at end of file diff --git a/app/views/super_admin/users/show.html.erb b/app/views/super_admin/users/show.html.erb index 622f95724..d8b2c6102 100644 --- a/app/views/super_admin/users/show.html.erb +++ b/app/views/super_admin/users/show.html.erb @@ -56,44 +56,6 @@ as well as a link to its edit page. -
- <% account_user_page = Administrate::Page::Form.new(AccountUserDashboard.new, AccountUser.new) %> - <%= form_for([namespace, account_user_page.resource], html: { class: "form" }) do |f| %> - <% if account_user_page.resource.errors.any? %> -
-

- <%= t( - "administrate.form.errors", - pluralized_errors: pluralize(account_user_page.resource.errors.count, t("administrate.form.error")), - resource_name: display_resource_name(account_user_page.resource_name) - ) %> -

- -
    - <% account_user_page.resource.errors.full_messages.each do |message| %> -
  • <%= message %>
  • - <% end %> -
-
- <% end %> - - <% account_user_page.attributes.each do |title, attributes| -%> - <% attributes.each do |attribute| %> - <% if attribute.name == "user" %> - <%= f.hidden_field('user_id', value: page.resource.id) %> - <% else %> -
- <%= render_field attribute, f: f %> -
- <% end %> - <% end %> - <% end -%> - -
- <%= f.submit %> -
-<% end %> - -
+<%= render 'super_admin/shared/account_user_form', page: page, namespace: namespace, resource_type: 'user' %> <%= render partial: "impersonate", locals: {page: page} %> diff --git a/config/routes.rb b/config/routes.rb index fbecd2d50..ebec6894b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -533,7 +533,7 @@ Rails.application.routes.draw do end # resources that doesn't appear in primary navigation in super admin - resources :account_users, only: [:new, :create, :destroy] + resources :account_users, only: [:new, :create, :show, :destroy] end authenticated :super_admin do mount Sidekiq::Web => '/monitoring/sidekiq'