diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/api/entities.rb | 12 | ||||
| -rw-r--r-- | lib/api/projects.rb | 8 |
2 files changed, 18 insertions, 2 deletions
diff --git a/lib/api/entities.rb b/lib/api/entities.rb index 99eda3b0c4b..94168fa4ebc 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -503,12 +503,20 @@ module API class ProjectWithAccess < Project expose :permissions do expose :project_access, using: Entities::ProjectAccess do |project, options| - project.project_members.find_by(user_id: options[:current_user].id) + if options.key?(:project_members) + (options[:project_members] || []).find { |member| member.source_id == project.id } + else + project.project_members.find_by(user_id: options[:current_user].id) + end end expose :group_access, using: Entities::GroupAccess do |project, options| if project.group - project.group.group_members.find_by(user_id: options[:current_user].id) + if options.key?(:group_members) + (options[:group_members] || []).find { |member| member.source_id == project.namespace_id } + else + project.group.group_members.find_by(user_id: options[:current_user].id) + end end end end diff --git a/lib/api/projects.rb b/lib/api/projects.rb index 27d49eae844..c459257158d 100644 --- a/lib/api/projects.rb +++ b/lib/api/projects.rb @@ -77,9 +77,17 @@ module API projects = projects.with_issues_enabled if params[:with_issues_enabled] projects = projects.with_merge_requests_enabled if params[:with_merge_requests_enabled] + if current_user + projects = projects.includes(:route, :taggings, namespace: :route) + project_members = current_user.project_members + group_members = current_user.group_members + end + options = options.reverse_merge( with: current_user ? Entities::ProjectWithAccess : Entities::BasicProjectDetails, statistics: params[:statistics], + project_members: project_members, + group_members: group_members, current_user: current_user ) options[:with] = Entities::BasicProjectDetails if params[:simple] |
