49 lines
1.7 KiB
Ruby
49 lines
1.7 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
module Gitlab
|
||
|
module BackgroundMigration
|
||
|
module UserMentions
|
||
|
module Models
|
||
|
# isolated Namespace model
|
||
|
class Project < ActiveRecord::Base
|
||
|
include Concerns::IsolatedFeatureGate
|
||
|
include Gitlab::BackgroundMigration::UserMentions::Lib::Gitlab::IsolatedVisibilityLevel
|
||
|
|
||
|
self.table_name = 'projects'
|
||
|
self.inheritance_column = :_type_disabled
|
||
|
|
||
|
belongs_to :group, -> { where(type: 'Group') }, foreign_key: 'namespace_id', class_name: "::Gitlab::BackgroundMigration::UserMentions::Models::Group"
|
||
|
belongs_to :namespace, class_name: "::Gitlab::BackgroundMigration::UserMentions::Models::Namespace"
|
||
|
alias_method :parent, :namespace
|
||
|
|
||
|
# Returns a collection of projects that is either public or visible to the
|
||
|
# logged in user.
|
||
|
def self.public_or_visible_to_user(user = nil, min_access_level = nil)
|
||
|
min_access_level = nil if user&.can_read_all_resources?
|
||
|
|
||
|
return public_to_user unless user
|
||
|
|
||
|
if user.is_a?(::Gitlab::BackgroundMigration::UserMentions::Models::User)
|
||
|
where('EXISTS (?) OR projects.visibility_level IN (?)',
|
||
|
user.authorizations_for_projects(min_access_level: min_access_level),
|
||
|
levels_for_user(user))
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def grafana_integration
|
||
|
nil
|
||
|
end
|
||
|
|
||
|
def default_issues_tracker?
|
||
|
true # we do not care of the issue tracker type(internal or external) when parsing mentions
|
||
|
end
|
||
|
|
||
|
def visibility_level_field
|
||
|
:visibility_level
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|