diff --git a/app/helpers/users_helper.rb b/app/helpers/users_helper.rb index 6b908edca..d4a8337b5 100644 --- a/app/helpers/users_helper.rb +++ b/app/helpers/users_helper.rb @@ -88,4 +88,30 @@ module UsersHelper end end end + + def render_api_user_includes(user, api, memberships = nil) + api.array :groups do |groups| + user.groups.each do |group| + api.group :id => group.id, :name => group.name + end + end if User.current.admin? && include_in_api_response?('groups') + + api.array :memberships do + memberships.each do |membership| + api.membership do + api.id membership.id + api.project :id => membership.project.id, :name => membership.project.name + api.array :roles do + membership.member_roles.each do |member_role| + if member_role.role + attrs = {:id => member_role.role.id, :name => member_role.role.name} + attrs.merge!(:inherited => true) if member_role.inherited_from.present? + api.role attrs + end + end + end + end if membership.project + end + end if include_in_api_response?('memberships') && memberships + end end diff --git a/app/views/users/index.api.rsb b/app/views/users/index.api.rsb index 23e38398e..dc6868a16 100644 --- a/app/views/users/index.api.rsb +++ b/app/views/users/index.api.rsb @@ -11,6 +11,7 @@ api.array :users, api_meta(:total_count => @user_count, :offset => @offset, :lim api.last_login_on user.last_login_on render_api_custom_values user.visible_custom_field_values, api + render_api_user_includes(user, api) end end end diff --git a/app/views/users/show.api.rsb b/app/views/users/show.api.rsb index 1a3041db3..d74a42cd6 100644 --- a/app/views/users/show.api.rsb +++ b/app/views/users/show.api.rsb @@ -11,28 +11,5 @@ api.user do api.status @user.status if User.current.admin? render_api_custom_values @user.visible_custom_field_values, api - - api.array :groups do |groups| - @user.groups.each do |group| - api.group :id => group.id, :name => group.name - end - end if User.current.admin? && include_in_api_response?('groups') - - api.array :memberships do - @memberships.each do |membership| - api.membership do - api.id membership.id - api.project :id => membership.project.id, :name => membership.project.name - api.array :roles do - membership.member_roles.each do |member_role| - if member_role.role - attrs = {:id => member_role.role.id, :name => member_role.role.name} - attrs.merge!(:inherited => true) if member_role.inherited_from.present? - api.role attrs - end - end - end - end if membership.project - end - end if include_in_api_response?('memberships') && @memberships + render_api_user_includes(@user, api, @memberships) end