mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-09-20 23:16:15 +08:00
Rename ActiveStorage base controller
This commit is contained in:
parent
e2a779ccfe
commit
9c88327a16
|
@ -1,7 +1,7 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module ActiveStorage
|
||||
class BlobsController < BaseController
|
||||
class BlobsController < CustomBaseController
|
||||
include ActiveStorage::SetBlob
|
||||
include ActiveStorage::CheckBlobPermissions
|
||||
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -1,7 +1,7 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module ActiveStorage
|
||||
class RepresentationsController < BaseController
|
||||
class RepresentationsController < CustomBaseController
|
||||
include ActiveStorage::SetBlob
|
||||
include ActiveStorage::CheckBlobPermissions
|
||||
|
||||
|
|
Loading…
Reference in a new issue