mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2024-11-29 10:24:20 +01:00
44 lines
1.1 KiB
Ruby
44 lines
1.1 KiB
Ruby
class OpenAPI::V1::BaseController < ActionController::Base
|
|
protect_from_forgery with: :null_session
|
|
before_action :authenticate
|
|
before_action :increment_calls_count
|
|
|
|
rescue_from ActiveRecord::RecordNotFound, with: :not_found
|
|
rescue_from OpenAPI::ParameterError, with: :bad_request
|
|
rescue_from ActionController::ParameterMissing, with: :bad_request
|
|
|
|
helper_method :current_api_client
|
|
|
|
protected
|
|
def not_found
|
|
render json: { errors: ["Not found"] }, status: :not_found
|
|
end
|
|
|
|
def bad_request
|
|
render json: { errors: ["Bad request"] }, status: :bad_request
|
|
end
|
|
|
|
def authenticate
|
|
authenticate_token || render_unauthorized
|
|
end
|
|
|
|
def authenticate_token
|
|
authenticate_with_http_token do |token, options|
|
|
@open_api_client = OpenAPI::Client.find_by(token: token)
|
|
end
|
|
end
|
|
|
|
def current_api_client
|
|
@open_api_client
|
|
end
|
|
|
|
def render_unauthorized
|
|
render json: { errors: ['Bad credentials'] }, status: 401
|
|
end
|
|
|
|
private
|
|
def increment_calls_count
|
|
@open_api_client.increment_calls_count
|
|
end
|
|
end
|