Class: Gitlab::Middleware::ReadOnly::Controller

Inherits:
Object
  • Object
show all
Defined in:
lib/gitlab/middleware/read_only/controller.rb

Constant Summary collapse

DISALLOWED_METHODS =
%w[POST PATCH PUT DELETE].freeze
APPLICATION_JSON =
'application/json'
APPLICATION_JSON_TYPES =
[
  APPLICATION_JSON,
  'application/vnd.git-lfs+json'
].freeze
READ_ONLY_INSTANCE_ERROR_MESSAGE =
'You cannot perform write operations on a read-only instance'
ALLOWLISTED_GIT_READ_ONLY_ROUTES =
{
  'repositories/git_http' => %w[git_upload_pack]
}.freeze
ALLOWLISTED_GIT_LFS_BATCH_ROUTES =
{
  'repositories/lfs_api' => %w[batch]
}.freeze
ALLOWLISTED_GIT_REVISION_ROUTES =
{
  'projects/compare' => %w[create]
}.freeze
ALLOWLISTED_SESSION_ROUTES =
{
  'sessions' => %w[destroy],
  'admin/sessions' => %w[create destroy]
}.freeze
GRAPHQL_URL =
'/api/graphql'

Instance Method Summary collapse

Constructor Details

#initialize(app, env) ⇒ Controller

Returns a new instance of Controller.



34
35
36
37
# File 'lib/gitlab/middleware/read_only/controller.rb', line 34

def initialize(app, env)
  @app = app
  @env = env
end

Instance Method Details

#callObject



39
40
41
42
43
# File 'lib/gitlab/middleware/read_only/controller.rb', line 39

def call
  return @app.call(@env) unless disallowed_request? && read_only?

  handle_read_only_error
end