1
0
mirror of https://github.com/meineerde/redmine.git synced 2026-02-01 03:57:15 +00:00

Fix CookieOverflow error when deleting a role used by many projects (#42441, #43164).

Patch by Kenta Kumojima (user:kumojima).


git-svn-id: https://svn.redmine.org/redmine/trunk@23933 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Go MAEDA 2025-08-30 06:38:26 +00:00
parent a175bc5aac
commit aef12fbe49
2 changed files with 15 additions and 15 deletions

View File

@ -96,20 +96,20 @@ class RolesController < ApplicationController
end
def destroy
begin
@role.destroy
rescue
flash[:error] = l(:error_can_not_remove_role)
if @role.members.present?
projects = Project.joins(members: :member_roles).where(member_roles: { role_id: @role.id }).distinct.sorted
links = projects.map do |p|
view_context.link_to(p, settings_project_path(p, tab: 'members'))
end.join(', ')
flash[:error] += l(:error_can_not_remove_role_reason_members_html, projects: links)
end
end
@role.destroy
redirect_to roles_path
rescue
flash.now[:error] = l(:error_can_not_remove_role)
if @role.members.present?
projects = Project.joins(members: :member_roles).where(member_roles: { role_id: @role.id }).distinct.sorted
links = projects.map do |p|
view_context.link_to(p, settings_project_path(p, tab: 'members'))
end.join(', ')
flash.now[:error] += l(:error_can_not_remove_role_reason_members_html, projects: links)
end
@roles = Role.sorted.to_a
render :index
end
def permissions

View File

@ -244,7 +244,7 @@ class RolesControllerTest < Redmine::ControllerTest
delete :destroy, params: { id: role.id }
assert_redirected_to roles_path
assert_response :success
assert Role.find_by(id: role.id)
assert flash[:error].present?
@ -262,7 +262,7 @@ class RolesControllerTest < Redmine::ControllerTest
delete :destroy, params: { id: role.id }
assert_redirected_to roles_path
assert_response :success
assert Role.find_by(id: role.id)
assert flash[:error].present?
assert_equal flash[:error], I18n.t(:error_can_not_remove_role)