diff --git a/.gitignore b/.gitignore index f96977c9a3..9830de4460 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.rvmrc .DS_Store .bundle dump.rdb diff --git a/.rvmrc b/.rvmrc deleted file mode 100644 index 7eb779d702..0000000000 --- a/.rvmrc +++ /dev/null @@ -1 +0,0 @@ -rvm use --create 1.9.2@cartodb > /dev/null diff --git a/app/models/visualization/member.rb b/app/models/visualization/member.rb index 7fe0a1b2ff..8c36f9803d 100644 --- a/app/models/visualization/member.rb +++ b/app/models/visualization/member.rb @@ -269,6 +269,10 @@ module CartoDB tokens.first end #get_auth_token + def supports_private_maps? + !@user_data.nil? && @user_data.respond_to?(:actions) && @user_data.actions.respond_to?(:private_maps) + end # supports_private_maps? + private attr_reader :repository, :name_checker, :validator @@ -281,6 +285,10 @@ module CartoDB remove_password() end + if (privacy_changed && @privacy == PRIVACY_PRIVATE && !supports_private_maps?) + raise CartoDB::InvalidMember + end + invalidate_varnish_cache if name_changed || privacy_changed || description_changed set_timestamps diff --git a/lib/assets/javascripts/cartodb/table/actions_menu.js b/lib/assets/javascripts/cartodb/table/actions_menu.js index 9c8a8ffb2b..efd3851390 100644 --- a/lib/assets/javascripts/cartodb/table/actions_menu.js +++ b/lib/assets/javascripts/cartodb/table/actions_menu.js @@ -307,10 +307,7 @@ self.create_vis_dialog.appendToBody().open(); } else { - // Set visualization to private if need it - if (private_vis) { - self.vis.set('privacy', 'PRIVATE'); - } + self.vis.set('privacy', private_vis); // Add new layer self.map.addCartodbLayerFromTable(tableName, userName, { diff --git a/spec/models/table_spec.rb b/spec/models/table_spec.rb index 6cf7821812..fa8d8f601a 100644 --- a/spec/models/table_spec.rb +++ b/spec/models/table_spec.rb @@ -174,6 +174,9 @@ describe Table do end it 'propagates privacy changes to the associated visualization' do + # Need to at least have this decorated in the user data or checks before becoming private will raise an error + CartoDB::Visualization::Member.any_instance.stubs(:supports_private_maps?).returns(true) + table = create_table(user_id: @user.id) table.should be_private table.table_visualization.should be_private @@ -201,6 +204,9 @@ describe Table do it 'propagates changes to affected visualizations if privacy set to PRIVATE' do + # Need to at least have this decorated in the user data or checks before becoming private will raise an error + CartoDB::Visualization::Member.any_instance.stubs(:supports_private_maps?).returns(true) + table = create_table(user_id: @user.id) table.should be_private table.table_visualization.should be_private @@ -220,6 +226,9 @@ describe Table do end it 'receives privacy changes from the associated visualization' do + # Need to at least have this decorated in the user data or checks before becoming private will raise an error + CartoDB::Visualization::Member.any_instance.stubs(:supports_private_maps?).returns(true) + table = create_table(user_id: @user.id) table.should be_private table.table_visualization.should be_private diff --git a/spec/models/visualization/member_spec.rb b/spec/models/visualization/member_spec.rb index 01179d2002..d33c423e5b 100644 --- a/spec/models/visualization/member_spec.rb +++ b/spec/models/visualization/member_spec.rb @@ -84,6 +84,9 @@ describe Visualization::Member do end it 'invalidates vizjson cache in varnish if privacy changed' do + # Need to at least have this decorated in the user data or checks before becoming private will raise an error + CartoDB::Visualization::Member.any_instance.stubs(:supports_private_maps?).returns(true) + member = Visualization::Member.new(random_attributes) member.store