0
0
Fork 0

Fix #416 - Generate random unique 14-byte (19 characters) shortcodes

for local attachments, use them in URLs. Check status privacy
before redirecting to actual file.
This commit is contained in:
Eugen Rochko 2017-01-06 00:21:12 +01:00
parent 9f21eb6064
commit 7b9f8766e8
4 changed files with 37 additions and 2 deletions

View file

@ -16,6 +16,7 @@ class MediaAttachment < ApplicationRecord
validates :account, presence: true
scope :local, -> { where(remote_url: '') }
default_scope { order('id asc') }
def local?
@ -38,6 +39,12 @@ class MediaAttachment < ApplicationRecord
image? ? 'image' : 'video'
end
def to_param
shortcode
end
before_create :set_shortcode
class << self
private
@ -62,4 +69,15 @@ class MediaAttachment < ApplicationRecord
end
end
end
private
def set_shortcode
return unless local?
loop do
self.shortcode = SecureRandom.urlsafe_base64(14)
break if MediaAttachment.find_by(shortcode: shortcode).nil?
end
end
end