Rename ActiveStorage base controller

This commit is contained in:
Urban Rotnik 2019-10-03 11:00:59 +02:00
parent e2a779ccfe
commit 9c88327a16
4 changed files with 3 additions and 67 deletions

View file

@ -1,7 +1,7 @@
# frozen_string_literal: true
module ActiveStorage
class BlobsController < BaseController
class BlobsController < CustomBaseController
include ActiveStorage::SetBlob
include ActiveStorage::CheckBlobPermissions

View file

@ -2,7 +2,7 @@
# The base controller for all ActiveStorage controllers.
module ActiveStorage
class BaseController < ApplicationController
class CustomBaseController < ApplicationController
include ActiveStorage::SetCurrent
before_action do

View file

@ -1,64 +0,0 @@
# frozen_string_literal: true
module ActiveStorage
class DiskController < ActiveStorage::BaseController
skip_forgery_protection
skip_before_action :authenticate_user!, :authenticate_user_from_token!, only: :show # Skip authentication
def show
if (key = decode_verified_key)
serve_file disk_service.path_for(key[:key]), content_type: key[:content_type], disposition: key[:disposition]
else
head :not_found
end
rescue Errno::ENOENT
head :not_found
end
def update
if (token = decode_verified_token)
if acceptable_content?(token)
disk_service.upload token[:key], request.body, checksum: token[:checksum]
else
head :unprocessable_entity
end
else
head :not_found
end
rescue ActiveStorage::IntegrityError
head :unprocessable_entity
end
private
def disk_service
ActiveStorage::Blob.service
end
def decode_verified_key
ActiveStorage.verifier.verified(params[:encoded_key], purpose: :blob_key)
end
def serve_file(path, content_type:, disposition:)
Rack::File.new(nil).serving(request, path).tap do |(status, headers, body)|
self.status = status
self.response_body = body
headers.each do |name, value|
response.headers[name] = value
end
response.headers['Content-Type'] = content_type || DEFAULT_SEND_FILE_TYPE
response.headers['Content-Disposition'] = disposition || DEFAULT_SEND_FILE_DISPOSITION
end
end
def decode_verified_token
ActiveStorage.verifier.verified(params[:encoded_token], purpose: :blob_token)
end
def acceptable_content?(token)
token[:content_type] == request.content_mime_type && token[:content_length] == request.content_length
end
end
end

View file

@ -1,7 +1,7 @@
# frozen_string_literal: true
module ActiveStorage
class RepresentationsController < BaseController
class RepresentationsController < CustomBaseController
include ActiveStorage::SetBlob
include ActiveStorage::CheckBlobPermissions