mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-10 21:26:07 +10:00
Filtering service used klass instead of passed items. Because of this you see list of all issues intead of authorized ones. This commit fixes it so people see only issues they are authorized to see. Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
82 lines
2.6 KiB
Ruby
82 lines
2.6 KiB
Ruby
class DashboardController < ApplicationController
|
|
respond_to :html
|
|
|
|
before_filter :load_projects, except: [:projects]
|
|
before_filter :event_filter, only: :show
|
|
before_filter :default_filter, only: [:issues, :merge_requests]
|
|
|
|
|
|
def show
|
|
# Fetch only 30 projects.
|
|
# If user needs more - point to Dashboard#projects page
|
|
@projects_limit = 30
|
|
|
|
@groups = current_user.authorized_groups.sort_by(&:human_name)
|
|
@has_authorized_projects = @projects.count > 0
|
|
@projects_count = @projects.count
|
|
@projects = @projects.limit(@projects_limit)
|
|
|
|
@events = Event.in_projects(current_user.authorized_projects.pluck(:id))
|
|
@events = @event_filter.apply_filter(@events)
|
|
@events = @events.limit(20).offset(params[:offset] || 0)
|
|
|
|
@last_push = current_user.recent_push
|
|
|
|
respond_to do |format|
|
|
format.html
|
|
format.json { pager_json("events/_events", @events.count) }
|
|
format.atom { render layout: false }
|
|
end
|
|
end
|
|
|
|
def projects
|
|
@projects = case params[:scope]
|
|
when 'personal' then
|
|
current_user.namespace.projects
|
|
when 'joined' then
|
|
current_user.authorized_projects.joined(current_user)
|
|
when 'owned' then
|
|
current_user.owned_projects
|
|
else
|
|
current_user.authorized_projects
|
|
end
|
|
|
|
@projects = @projects.where(namespace_id: Group.find_by(name: params[:group])) if params[:group].present?
|
|
@projects = @projects.where(visibility_level: params[:visibility_level]) if params[:visibility_level].present?
|
|
@projects = @projects.includes(:namespace)
|
|
@projects = @projects.tagged_with(params[:label]) if params[:label].present?
|
|
@projects = @projects.sort(@sort = params[:sort])
|
|
@projects = @projects.page(params[:page]).per(30)
|
|
|
|
@labels = current_user.authorized_projects.tags_on(:labels)
|
|
@groups = current_user.authorized_groups
|
|
end
|
|
|
|
def merge_requests
|
|
@merge_requests = FilteringService.new.execute(MergeRequest, current_user, params)
|
|
@merge_requests = @merge_requests.page(params[:page]).per(20)
|
|
end
|
|
|
|
def issues
|
|
@issues = FilteringService.new.execute(Issue, current_user, params)
|
|
@issues = @issues.page(params[:page]).per(20)
|
|
@issues = @issues.includes(:author, :project)
|
|
|
|
respond_to do |format|
|
|
format.html
|
|
format.atom { render layout: false }
|
|
end
|
|
end
|
|
|
|
protected
|
|
|
|
def load_projects
|
|
@projects = current_user.authorized_projects.sorted_by_activity.non_archived
|
|
end
|
|
|
|
def default_filter
|
|
params[:scope] = 'assigned-to-me' if params[:scope].blank?
|
|
params[:state] = 'opened' if params[:state].blank?
|
|
end
|
|
end
|