# frozen_string_literal: true module SecureUploadEndpointHelpers include ActiveSupport::Concern def upload_from_path_and_extension(path_with_ext) sha1 = File.basename(path_with_ext, File.extname(path_with_ext)) # this takes care of optimized image requests sha1 = sha1.partition("_").first if sha1.include?("_") Upload.find_by(sha1: sha1) end def upload_from_full_url(url) Upload.find_by(sha1: Upload.sha1_from_long_url(url)) end def check_secure_upload_permission(upload) if upload.access_control_post_id.present? raise Discourse::InvalidAccess if current_user.nil? && SiteSetting.login_required raise Discourse::InvalidAccess if !guardian.can_see?(upload.access_control_post) else raise Discourse::NotFound if current_user.nil? end end end