Commit fa3cc1dd24fed0cd3b041e469cada054fda479ab

Authored by Dmitriy Zaporozhets
2 parents b7297285 f6cc71bc

Merge branch 'features/attachment_server' of /home/git/repositories/gitlab/gitlabhq

app/controllers/files_controller.rb 0 → 100644
... ... @@ -0,0 +1,13 @@
  1 +class FilesController < ApplicationController
  2 + def download
  3 + note = Note.find(params[:id])
  4 +
  5 + if can?(current_user, :read_project, note.project)
  6 + uploader = note.attachment
  7 + send_file uploader.file.path, disposition: 'attachment'
  8 + else
  9 + not_found!
  10 + end
  11 + end
  12 +end
  13 +
... ...
app/uploaders/attachment_uploader.rb
... ... @@ -19,4 +19,12 @@ class AttachmentUploader &lt; CarrierWave::Uploader::Base
19 19 rescue
20 20 false
21 21 end
  22 +
  23 + def secure_url
  24 + if self.class.storage == CarrierWave::Storage::File
  25 + "/files/#{model.class.to_s.underscore}/#{model.id}/#{file.filename}"
  26 + else
  27 + url
  28 + end
  29 + end
22 30 end
... ...
app/views/events/event/_note.html.haml
... ... @@ -26,7 +26,7 @@
26 26 = markdown truncate(event.target.note, length: 70)
27 27 - note = event.target
28 28 - if note.attachment.url
29   - = link_to note.attachment.url, target: "_blank", class: 'note-file-attach' do
  29 + = link_to note.attachment.secure_url, target: "_blank", class: 'note-file-attach' do
30 30 - if note.attachment.image?
31 31 = image_tag note.attachment.url, class: 'note-image-attach'
32 32 - else
... ...
app/views/notes/_note.html.haml
... ... @@ -31,7 +31,7 @@
31 31 - if note.attachment.image?
32 32 = image_tag note.attachment.url, class: 'note-image-attach'
33 33 .attachment.pull-right
34   - = link_to note.attachment.url, target: "_blank" do
  34 + = link_to note.attachment.secure_url, target: "_blank" do
35 35 %i.icon-paper-clip
36 36 = note.attachment_identifier
37 37 .clear
... ...
config/routes.rb
... ... @@ -46,6 +46,11 @@ Gitlab::Application.routes.draw do
46 46 end
47 47  
48 48 #
  49 + # Attachments serving
  50 + #
  51 + get 'files/:type/:id/:filename' => 'files#download', constraints: { id: /\d+/, type: /[a-z]+/, filename: /[a-zA-Z.0-9_\-\+]+/ }
  52 +
  53 + #
49 54 # Admin Area
50 55 #
51 56 namespace :admin do
... ...