Class: Constraints::ProjectUrlConstrainer

Inherits:
Object
  • Object
show all
Defined in:
lib/constraints/project_url_constrainer.rb

Instance Method Summary collapse

Instance Method Details

#matches?(request, existence_check: true) ⇒ Boolean

Returns:

  • (Boolean)

5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/constraints/project_url_constrainer.rb', line 5

def matches?(request, existence_check: true)
  namespace_path = request.params[:namespace_id]
  project_path = request.params[:project_id] || request.params[:id] || request.params[:repository_id]
  full_path = [namespace_path, project_path].join('/')

  return false unless ProjectPathValidator.valid_path?(full_path)
  return true unless existence_check

  # We intentionally allow SELECT(*) here so result of this query can be used
  # as cache for further Project.find_by_full_path calls within request
  Project.find_by_full_path(full_path, follow_redirects: request.get?).present?
end