Class: Issues::ConfidentialityFilter
- Inherits:
-
Issuables::BaseFilter
- Object
- Issuables::BaseFilter
- Issues::ConfidentialityFilter
- Defined in:
- app/finders/issues/confidentiality_filter.rb
Constant Summary collapse
Constants inherited from Issuables::BaseFilter
Issuables::BaseFilter::FILTER_ANY, Issuables::BaseFilter::FILTER_NONE
Instance Attribute Summary
Attributes inherited from Issuables::BaseFilter
Instance Method Summary collapse
- #filter(issues) ⇒ Object
-
#initialize(current_user:, parent:, assignee_filter:, related_groups: nil, **kwargs) ⇒ ConfidentialityFilter
constructor
A new instance of ConfidentialityFilter.
Constructor Details
#initialize(current_user:, parent:, assignee_filter:, related_groups: nil, **kwargs) ⇒ ConfidentialityFilter
Returns a new instance of ConfidentialityFilter.
7 8 9 10 11 12 13 14 |
# File 'app/finders/issues/confidentiality_filter.rb', line 7 def initialize(current_user:, parent:, assignee_filter:, related_groups: nil, **kwargs) @current_user = current_user @parent = parent @assignee_filter = assignee_filter @related_groups = super(**kwargs) end |
Instance Method Details
#filter(issues) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'app/finders/issues/confidentiality_filter.rb', line 16 def filter(issues) issues = issues.confidential_only if params[:confidential] # We do not need to do the confidentiality check if we know that only public issues will be returned return issues.public_only if @current_user.blank? || params[:confidential] == false return issues if user_can_see_all_confidential_issues? issues.public_only.or( issues.confidential_only.merge( issues.(@current_user) .or(issues.assigned_to(@current_user)) .or(access_to_parent_exists(issues)) ) ).allow_cross_joins_across_databases(url: 'https://gitlab.com/gitlab-org/gitlab/-/issues/422045') end |