45 lines
1.1 KiB
Ruby
45 lines
1.1 KiB
Ruby
module API
|
|
class ApplicationController < ::ApplicationController
|
|
rescue_from ActiveRecord::RecordNotFound, with: :not_found
|
|
|
|
skip_before_filter :verify_authenticity_token
|
|
skip_before_filter :authenticate!, only: :cor_preflight
|
|
|
|
before_filter :cor_filter
|
|
before_filter :json_filter!
|
|
|
|
def not_found
|
|
head :not_found
|
|
end
|
|
|
|
def cor_filter
|
|
headers['Access-Control-Allow-Origin'] = request.headers['Origin'] ?
|
|
request.headers['Origin'] :
|
|
''
|
|
headers['Access-Control-Allow-Credentials'] = 'true'
|
|
headers['Access-Control-Expose-Headers'] = 'Content-Length'
|
|
end
|
|
|
|
def cor_preflight
|
|
headers['Access-Control-Allow-Methods'] = 'GET, POST, PUT, DELETE'
|
|
headers['Access-Control-Allow-Headers'] =
|
|
'Content-Type, Content-Length, X-Requested-With'
|
|
|
|
head :ok
|
|
end
|
|
|
|
def ping
|
|
render json: { pong: 'ok' }
|
|
end
|
|
|
|
def authenticate!
|
|
head :unauthorized if current_user.nil?
|
|
end
|
|
|
|
def json_filter!
|
|
return if request.format.json?
|
|
head :not_acceptable, content_type: 'application/json'
|
|
end
|
|
end
|
|
end
|