1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2024-12-01 12:24:28 +01:00
fab-manager/app/uploaders/project_cao_uploader.rb

55 lines
1.5 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
# CarrierWave uploader for project CAO attachments.
# This file defines the parameters for these uploads
2015-05-05 03:10:25 +02:00
class ProjectCaoUploader < CarrierWave::Uploader::Base
include UploadHelper
# Choose what kind of storage to use for this uploader:
storage :file
after :remove, :delete_empty_dirs
# Override the directory where uploaded files will be stored.
# This is a sensible default for uploaders that are meant to be mounted:
def store_dir
"#{base_store_dir}/#{model.id}"
end
def base_store_dir
"uploads/#{model.class.to_s.underscore}"
end
# Add a white list of extensions which are allowed to be uploaded.
# For images you might use something like this:
def extension_whitelist
ENV['ALLOWED_EXTENSIONS'].split(' ')
2015-05-05 03:10:25 +02:00
end
def content_type_whitelist
ENV['ALLOWED_MIME_TYPES'].split(' ')
end
private
def check_content_type_whitelist!(new_file)
require 'mimemagic'
content_type = MimeMagic.by_magic(File.open(new_file.file))
if content_type_whitelist && !whitelisted_content_type?(content_type)
raise CarrierWave::IntegrityError,
I18n.translate(:'errors.messages.content_type_whitelist_error',
content_type: content_type,
allowed_types: Array(content_type_whitelist).join(', '))
end
end
def whitelisted_content_type?(content_type)
Array(content_type_whitelist).any? do |item|
item = Regexp.quote(item) if item.class != Regexp
content_type =~ /#{item}/
end
end
2015-05-05 03:10:25 +02:00
end