Merge branch 'release/0.5.0.0-RC' into develop
This commit is contained in:
commit
0bad6dba88
7 changed files with 23 additions and 21 deletions
|
|
@ -140,7 +140,7 @@ class UsersController < ApplicationController
|
|||
end
|
||||
|
||||
def download_profile
|
||||
send_data File.open(current_user.export.path).read, type: :json, filename: current_user.export.filename
|
||||
redirect_to current_user.export.url
|
||||
end
|
||||
|
||||
def export_photos
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
# licensed under the Affero General Public License version 3 or later. See
|
||||
# the COPYRIGHT file.
|
||||
|
||||
class ExportedPhotos < CarrierWave::Uploader::Base
|
||||
class ExportedPhotos < SecureUploader
|
||||
|
||||
def store_dir
|
||||
"uploads/users"
|
||||
|
|
@ -12,10 +12,6 @@ class ExportedPhotos < CarrierWave::Uploader::Base
|
|||
"#{model.username}_photos_#{secure_token}.zip" if original_filename.present?
|
||||
end
|
||||
|
||||
protected
|
||||
def secure_token(bytes = 16)
|
||||
var = :"@#{mounted_as}_secure_token"
|
||||
model.instance_variable_get(var) or model.instance_variable_set(var, SecureRandom.urlsafe_base64(bytes))
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
# licensed under the Affero General Public License version 3 or later. See
|
||||
# the COPYRIGHT file.
|
||||
|
||||
class ExportedUser < CarrierWave::Uploader::Base
|
||||
class ExportedUser < SecureUploader
|
||||
|
||||
def store_dir
|
||||
"uploads/users"
|
||||
|
|
@ -13,7 +13,7 @@ class ExportedUser < CarrierWave::Uploader::Base
|
|||
end
|
||||
|
||||
def filename
|
||||
"#{model.username}_diaspora_data.json.gz"
|
||||
"#{model.username}_diaspora_data_#{secure_token}.json.gz"
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
7
app/uploaders/secure_uploader.rb
Normal file
7
app/uploaders/secure_uploader.rb
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
class SecureUploader < CarrierWave::Uploader::Base
|
||||
protected
|
||||
def secure_token(bytes = 16)
|
||||
var = :"@#{mounted_as}_secure_token"
|
||||
model.instance_variable_get(var) or model.instance_variable_set(var, SecureRandom.urlsafe_base64(bytes))
|
||||
end
|
||||
end
|
||||
|
|
@ -179,9 +179,9 @@
|
|||
= link_to t('.download_export'), download_profile_user_path, class: "btn btn-success"
|
||||
%h6
|
||||
= t('.last_exported_at', timestamp: current_user.exported_at)
|
||||
= link_to t('.request_export_update'), export_profile_user_path, class: "btn"
|
||||
= link_to t(".request_export_update"), export_profile_user_path, method: :post, class: "btn"
|
||||
- else
|
||||
= link_to t('.request_export'), export_profile_user_path, :class => "btn"
|
||||
= link_to t(".request_export"), export_profile_user_path, method: :post, class: "btn"
|
||||
|
||||
- if current_user.exporting_photos
|
||||
.small-horizontal-spacer
|
||||
|
|
@ -191,10 +191,10 @@
|
|||
= link_to t('.download_export_photos'), download_photos_user_path, class: "btn btn-success"
|
||||
%h6
|
||||
= t('.last_exported_at', timestamp: current_user.exported_photos_at)
|
||||
= link_to t('.request_export_photos_update'), export_photos_user_path, class: "btn"
|
||||
= link_to t(".request_export_photos_update"), export_photos_user_path, method: :post, class: "btn"
|
||||
- else
|
||||
.small-horizontal-spacer
|
||||
= link_to t('.request_export_photos'), export_photos_user_path, :class => "btn"
|
||||
= link_to t(".request_export_photos"), export_photos_user_path, method: :post, class: "btn"
|
||||
|
||||
.span6
|
||||
%h3
|
||||
|
|
|
|||
|
|
@ -101,9 +101,9 @@ Diaspora::Application.routes.draw do
|
|||
|
||||
resource :user, :only => [:edit, :update, :destroy], :shallow => true do
|
||||
get :getting_started_completed
|
||||
get :export_profile
|
||||
post :export_profile
|
||||
get :download_profile
|
||||
get :export_photos
|
||||
post :export_photos
|
||||
get :download_photos
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ describe UsersController, :type => :controller do
|
|||
describe '#export_profile' do
|
||||
it 'queues an export job' do
|
||||
expect(@user).to receive :queue_export
|
||||
get :export_profile
|
||||
post :export_profile
|
||||
expect(request.flash[:notice]).to eql(I18n.t('users.edit.export_in_progress'))
|
||||
expect(response).to redirect_to(edit_user_path)
|
||||
end
|
||||
|
|
@ -24,20 +24,19 @@ describe UsersController, :type => :controller do
|
|||
it "downloads a user's export file" do
|
||||
@user.perform_export!
|
||||
get :download_profile
|
||||
parsed = JSON.parse(ActiveSupport::Gzip.decompress(response.body))
|
||||
expect(parsed['user']['username']).to eq @user.username
|
||||
expect(response).to redirect_to(@user.export.url)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#export_photos' do
|
||||
it 'queues an export photos job' do
|
||||
expect(@user).to receive :queue_export_photos
|
||||
get :export_photos
|
||||
post :export_photos
|
||||
expect(request.flash[:notice]).to eql(I18n.t('users.edit.export_photos_in_progress'))
|
||||
expect(response).to redirect_to(edit_user_path)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
describe '#download_photos' do
|
||||
it "redirects to user's photos zip file" do
|
||||
@user.perform_export_photos!
|
||||
|
|
@ -74,7 +73,7 @@ describe UsersController, :type => :controller do
|
|||
get :public, :username => @user.username, :format => :atom
|
||||
expect(response.body).to include('a href')
|
||||
end
|
||||
|
||||
|
||||
it 'includes reshares in the atom feed' do
|
||||
reshare = FactoryGirl.create(:reshare, :author => @user.person)
|
||||
get :public, :username => @user.username, :format => :atom
|
||||
|
|
|
|||
Loading…
Reference in a new issue