49 lines
1.4 KiB
Ruby
49 lines
1.4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Api
|
|
module V1
|
|
class BaseController < ApplicationController
|
|
include Api::OpenidConnect::ProtectedResourceEndpoint
|
|
|
|
protect_from_forgery unless: -> { request.format.json? }
|
|
|
|
protected
|
|
|
|
rescue_from Exception do |e|
|
|
logger.error e.message
|
|
logger.error e.backtrace.join("\n")
|
|
render json: error_body(500, e.message), status: :internal_server_error
|
|
end
|
|
|
|
rescue_from Rack::OAuth2::Server::Resource::Forbidden do |e|
|
|
logger.error e.message
|
|
render json: error_body(403, e.message), status: :forbidden
|
|
end
|
|
|
|
rescue_from ActiveRecord::RecordNotFound do |e|
|
|
logger.error e.message
|
|
message = I18n.t("api.error.not_found")
|
|
render json: error_body(404, message), status: :not_found
|
|
end
|
|
|
|
rescue_from ActiveRecord::RecordInvalid do |e|
|
|
logger.error e.message
|
|
render json: error_body(422, e.to_s), status: :unprocessable_entity
|
|
end
|
|
|
|
rescue_from ActionController::ParameterMissing do |e|
|
|
logger.error e.message
|
|
message = I18n.t("api.error.wrong_parameters") + ": " + e.message
|
|
render json: error_body(422, message), status: :unprocessable_entity
|
|
end
|
|
|
|
def error_body(code, message)
|
|
{code: code, message: message}
|
|
end
|
|
|
|
def current_user
|
|
current_token ? current_token.authorization.user : nil
|
|
end
|
|
end
|
|
end
|
|
end
|