Project

General

Profile

Patch #43640 » 0001-Refactor-GroupsController-remove_user-to-remove_user.patch

Marius BĂLTEANU, 2026-04-26 17:40

View differences:

app/controllers/groups_controller.rb
23 23

  
24 24
  before_action :require_admin, :except => [:show]
25 25
  before_action :find_group, :except => [:index, :new, :create]
26
  accept_api_auth :index, :show, :create, :update, :destroy, :add_users, :remove_user
26
  accept_api_auth :index, :show, :create, :update, :destroy, :add_users, :remove_users, :remove_user
27 27

  
28
  require_sudo_mode :add_users, :remove_user, :create, :update, :destroy, :edit_membership, :destroy_membership
28
  require_sudo_mode :add_users, :remove_users, :remove_user, :create, :update, :destroy, :edit_membership, :destroy_membership
29 29

  
30 30
  helper :custom_fields
31 31
  helper :principal_memberships
......
129 129
    end
130 130
  end
131 131

  
132
  def remove_user
133
    @group.users.delete(User.find(params[:user_id])) if request.delete?
132
  def remove_users
133
    @users = User.where(:id => (params[:user_id] || params[:user_ids])).to_a
134
    @group.users.delete(@users) if request.delete?
134 135
    respond_to do |format|
135 136
      format.html {redirect_to edit_group_path(@group, :tab => 'users')}
136 137
      format.js
......
138 139
    end
139 140
  end
140 141

  
142
  def remove_user
143
    Rails.application.deprecators[:redmine].warn "GroupsController#remove_user is deprecated and will be removed in Redmine 8.0. Please use #remove_users instead."
144
    remove_users
145
  end
146

  
141 147
  def autocomplete_for_user
142 148
    respond_to do |format|
143 149
      format.js
app/views/groups/_users.html.erb
11 11
      <tr id="user-<%= user.id %>">
12 12
        <td class="name"><%= link_to_user user %></td>
13 13
        <td class="buttons">
14
          <%= remove_link group_user_path(@group, :user_id => user), :remote => true %>
14
          <%= remove_link group_users_path(@group, :user_id => user), :remote => true %>
15 15
        </td>
16 16
      </tr>
17 17
    <% end %>
config/routes.rb
346 346

  
347 347
  get 'groups/:id/users/new', :to => 'groups#new_users', :id => /\d+/, :as => 'new_group_users'
348 348
  post 'groups/:id/users', :to => 'groups#add_users', :id => /\d+/, :as => 'group_users'
349
  delete 'groups/:id/users', :to => 'groups#remove_users', :id => /\d+/
349 350
  delete 'groups/:id/users/:user_id', :to => 'groups#remove_user', :id => /\d+/, :as => 'group_user'
350 351

  
351 352
  resources :trackers, :except => :show do
test/functional/groups_controller_test.rb
249 249
    assert_match /John Smith/, response.body
250 250
  end
251 251

  
252
  def test_remove_user
252
  def test_remove_users
253 253
    assert_difference 'Group.find(10).users.count', -1 do
254 254
      delete(
255
        :remove_user,
255
        :remove_users,
256 256
        :params => {
257 257
          :id => 10,
258 258
          :user_id => '8'
......
261 261
    end
262 262
  end
263 263

  
264
  def test_xhr_remove_user
264
  def test_remove_users_plural
265
    group = Group.find(10)
266
    group.users << User.find(2)
267
    assert_difference 'group.users.count', -2 do
268
      delete(
269
        :remove_users,
270
        :params => {
271
          :id => 10,
272
          :user_ids => ['2', '8']
273
        }
274
      )
275
    end
276
  end
277

  
278
  def test_xhr_remove_users
265 279
    assert_difference 'Group.find(10).users.count', -1 do
266 280
      delete(
267
        :remove_user,
281
        :remove_users,
268 282
        :params => {
269 283
          :id => 10,
270 284
          :user_id => '8'
......
276 290
    end
277 291
  end
278 292

  
293
  def test_remove_user_should_be_deprecated
294
    Rails.application.deprecators[:redmine].expects(:warn).with(regexp_matches(/GroupsController#remove_user is deprecated/))
295
    delete(
296
      :remove_user,
297
      :params => {
298
        :id => 10,
299
        :user_id => '8'
300
      }
301
    )
302
  end
303

  
279 304
  def test_autocomplete_for_user
280 305
    get(
281 306
      :autocomplete_for_user,
test/integration/api_test/api_routing_test.rb
51 51

  
52 52
  def test_group_users
53 53
    should_route 'POST /groups/567/users' => 'groups#add_users', :id => '567'
54
    should_route 'DELETE /groups/567/users' => 'groups#remove_users', :id => '567'
54 55
    should_route 'DELETE /groups/567/users/12' => 'groups#remove_user', :id => '567', :user_id => '12'
55 56
  end
56 57

  
test/integration/routing/groups_test.rb
37 37
  def test_group_users
38 38
    should_route 'GET /groups/567/users/new' => 'groups#new_users', :id => '567'
39 39
    should_route 'POST /groups/567/users' => 'groups#add_users', :id => '567'
40
    should_route 'DELETE /groups/567/users' => 'groups#remove_users', :id => '567'
40 41
    should_route 'DELETE /groups/567/users/12' => 'groups#remove_user', :id => '567', :user_id => '12'
41 42
  end
42 43
end
(13-13/13)