mirror of
https://github.com/redmine/redmine.git
synced 2025-11-02 19:36:00 +01:00
Error when adding user to group where he is already assigned (#18665).
git-svn-id: http://svn.redmine.org/redmine/trunk@13785 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
@@ -637,12 +637,14 @@ class ApplicationController < ActionController::Base
|
||||
end
|
||||
|
||||
# Renders API response on validation failure
|
||||
# for an object or an array of objects
|
||||
def render_validation_errors(objects)
|
||||
if objects.is_a?(Array)
|
||||
@error_messages = objects.map {|object| object.errors.full_messages}.flatten
|
||||
else
|
||||
@error_messages = objects.errors.full_messages
|
||||
messages = Array.wrap(objects).map {|object| object.errors.full_messages}.flatten
|
||||
render_api_errors(messages)
|
||||
end
|
||||
|
||||
def render_api_errors(*messages)
|
||||
@error_messages = messages.flatten
|
||||
render :template => 'common/error_messages.api', :status => :unprocessable_entity, :layout => nil
|
||||
end
|
||||
|
||||
|
||||
@@ -99,12 +99,18 @@ class GroupsController < ApplicationController
|
||||
end
|
||||
|
||||
def add_users
|
||||
@users = User.where(:id => (params[:user_id] || params[:user_ids])).to_a
|
||||
@group.users << @users if request.post?
|
||||
@users = User.not_in_group(@group).where(:id => (params[:user_id] || params[:user_ids])).to_a
|
||||
@group.users << @users
|
||||
respond_to do |format|
|
||||
format.html { redirect_to edit_group_path(@group, :tab => 'users') }
|
||||
format.js
|
||||
format.api { render_api_ok }
|
||||
format.api {
|
||||
if @users.any?
|
||||
render_api_ok
|
||||
else
|
||||
render_api_errors "#{l(:label_user)} #{l('activerecord.errors.messages.invalid')}"
|
||||
end
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -185,6 +185,19 @@ class Redmine::ApiTest::GroupsTest < Redmine::ApiTest::Base
|
||||
assert_include User.find(5), Group.find(10).users
|
||||
end
|
||||
|
||||
test "POST /groups/:id/users.xml should not add the user if already added" do
|
||||
Group.find(10).users << User.find(5)
|
||||
|
||||
assert_no_difference 'Group.find(10).users.count' do
|
||||
post '/groups/10/users.xml', {:user_id => 5}, credentials('admin')
|
||||
assert_response :unprocessable_entity
|
||||
end
|
||||
|
||||
assert_select 'errors' do
|
||||
assert_select 'error', :text => /User is invalid/
|
||||
end
|
||||
end
|
||||
|
||||
test "DELETE /groups/:id/users/:user_id.xml should remove user from the group" do
|
||||
assert_difference 'Group.find(10).users.count', -1 do
|
||||
delete '/groups/10/users/8.xml', {}, credentials('admin')
|
||||
|
||||
Reference in New Issue
Block a user