41f7175f926f56106c42b105b694e5585a2c48d6
[arvados.git] / services / api / app / controllers / arvados / v1 / healthcheck_controller.rb
1 # Copyright (C) The Arvados Authors. All rights reserved.
2 #
3 # SPDX-License-Identifier: AGPL-3.0
4
5 class Arvados::V1::HealthcheckController < ApplicationController
6   skip_before_filter :catch_redirect_hint
7   skip_before_filter :find_objects_for_index
8   skip_before_filter :find_object_by_uuid
9   skip_before_filter :load_filters_param
10   skip_before_filter :load_limit_offset_order_params
11   skip_before_filter :load_read_auths
12   skip_before_filter :load_where_param
13   skip_before_filter :render_404_if_no_object
14   skip_before_filter :require_auth_scope
15
16   before_filter :check_auth_header
17
18   def check_auth_header
19     mgmt_token = Rails.configuration.management_token
20
21     if !mgmt_token
22       send_error("disabled", status: 404)
23     else
24       auth_header = request.headers['Authorization']
25       if !auth_header
26         send_error("authorization required", status: 401)
27       elsif auth_header != 'Bearer '+mgmt_token
28         send_error("authorization error", status: 403)
29       end
30     end
31   end
32
33   def ping
34     resp = {"health": "OK"}
35     send_json resp
36   end
37 end