solidus_multi_domain 1.0.1 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 191f8cf6df04e131b0007d89065a3a690f5d4f41
4
- data.tar.gz: a9de546369e8aa0d751eba3be96ad2f2077fcc41
3
+ metadata.gz: 473989c53e12907163063b0b48d04279f8524a5e
4
+ data.tar.gz: 607a4ca0c1d8b1912a9eaf5d03ff7cc882c9173b
5
5
  SHA512:
6
- metadata.gz: 6867d1c89bc564d8a435258b541bc60e60347406cf4c088e85149d7a99e412da058d02e73f7458b3a4126e9a95fcef9733d2725fc18c60b968817ab62181b959
7
- data.tar.gz: 2879bc42a0beef6997ca48528887b2c6d8517f26335312b566d46ee32d66f0926e41fb273a4eb5a2136685b4ffbafe6239c55de18df734c31d5f7d43d796cee5
6
+ metadata.gz: f3d34f22e52a395d5ed7ae65a92513f1a131b0155d596bc3fb2a8a2863151419c41b121f377c208079c0fd0d049953b86ef0564e215bb1c37820f9316d2c90bc
7
+ data.tar.gz: 9b512125660409f4f0ea10804d7844850eb09ea19544b26951057e44d3bebc648875a4aee49c2cff7bc38b7eed87a096e67a517eb436a5f07737b26dfdebfd32
data/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- gem "solidus", github: "solidusio/solidus"
3
+ gem "solidus", github: "solidusio/solidus", branch: "v1.0"
4
4
 
5
5
  group :development, :test do
6
6
  gem "pry-rails"
data/README.md CHANGED
@@ -56,10 +56,13 @@ rails g solidus_multi_domain:install
56
56
 
57
57
  You should see 'Stores & Domains' in Configuration tab of Spree Admin.
58
58
 
59
- Features To-do
60
- --------------
59
+ Authorization
60
+ -------------
61
+
62
+ For discrete authorization, two permission sets have been added to allow for granular display in the admin.
63
+
64
+ `Spree::PermissionSets::StoreDisplay` and `Spree::PermissionSets::StoreManagement` have been added and can be assigned via [RoleConfiguration](http://docs.solidus.io/Spree/RoleConfiguration.html)
61
65
 
62
- 1. Taxonomies - associate stores with taxonomies.
63
66
 
64
67
  Testing
65
68
  -------
@@ -0,0 +1,9 @@
1
+ module Spree
2
+ module PermissionSets
3
+ class StoreDisplay < PermissionSets::Base
4
+ def activate!
5
+ can [:display, :admin], Spree::Store
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Spree
2
+ module PermissionSets
3
+ class StoreManagement < PermissionSets::Base
4
+ def activate!
5
+ can :manage, Spree::Store
6
+ end
7
+ end
8
+ end
9
+ end
@@ -1,5 +1,7 @@
1
- Deface::Override.new(:virtual_path => "spree/admin/shared/_configuration_menu",
2
- :name => "multi_domain_admin_configurations_menu",
3
- :insert_bottom => "[data-hook='admin_configurations_sidebar_menu']",
4
- :text => "<%= configurations_sidebar_menu_item Spree.t(:stores_admin), admin_stores_url %>",
5
- :disabled => false)
1
+ Deface::Override.new(
2
+ virtual_path: "spree/admin/shared/_configuration_menu",
3
+ name: "multi_domain_admin_configurations_menu",
4
+ insert_bottom: "[data-hook='admin_configurations_sidebar_menu']",
5
+ disabled: false,
6
+ partial: "spree/shared/multi_domain_sidebar_entry"
7
+ )
@@ -5,9 +5,11 @@
5
5
  <% end %>
6
6
 
7
7
  <% content_for :page_actions do %>
8
- <li>
9
- <%= button_link_to Spree.t(:new_store), new_object_url, :icon => 'icon-plus', :id => 'admin_new_store_link' %>
10
- </li>
8
+ <% if can?(:create, Spree::Store) %>
9
+ <li>
10
+ <%= button_link_to Spree.t(:new_store), new_object_url, :icon => 'icon-plus', :id => 'admin_new_store_link' %>
11
+ </li>
12
+ <% end %>
11
13
  <% end %>
12
14
 
13
15
  <table class="index" id='listing_stores'>
@@ -34,8 +36,12 @@
34
36
  <td><%= store.mail_from_address %></td>
35
37
  <td><%= store.url %></td>
36
38
  <td data-hook="admin_stores_index_row_actions" class="actions">
37
- <%= link_to_edit store, :no_text => true %> &nbsp;
38
- <%= link_to_delete store, :no_text => true %>
39
+ <% if can? :update, store %>
40
+ <%= link_to_edit store, :no_text => true %>
41
+ <% end %>
42
+ <% if can? :destroy, store %>
43
+ <%= link_to_delete store, :no_text => true %>
44
+ <% end %>
39
45
  </td>
40
46
  </tr>
41
47
  <% end %>
@@ -0,0 +1,3 @@
1
+ <% if can?(:display, Spree::Store) %>
2
+ <%= configurations_sidebar_menu_item Spree.t(:stores_admin), admin_stores_url %>
3
+ <% end %>
@@ -3,7 +3,7 @@
3
3
  Gem::Specification.new do |s|
4
4
  s.platform = Gem::Platform::RUBY
5
5
  s.name = "solidus_multi_domain"
6
- s.version = "1.0.1"
6
+ s.version = "1.0.3"
7
7
  s.summary = "Adds multiple site support to Solidus"
8
8
  s.description = "Multiple Solidus stores on different domains - single unified backed for processing orders."
9
9
  s.required_ruby_version = ">= 2.1"
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
18
18
  s.require_path = "lib"
19
19
  s.requirements << "none"
20
20
 
21
- s.add_dependency "solidus", [">= 1.0.0.pre", "< 2"]
21
+ s.add_dependency "solidus", "~> 1.0.0"
22
22
 
23
23
  s.add_development_dependency "rspec-rails", "~> 3.2"
24
24
  s.add_development_dependency "simplecov"
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::PermissionSets::StoreDisplay do
4
+ let(:ability) { Spree::Ability.new nil }
5
+
6
+ subject { ability }
7
+
8
+ context "when activated" do
9
+ before do
10
+ described_class.new(ability).activate!
11
+ end
12
+
13
+ it { should be_able_to(:display, Spree::Store) }
14
+ it { should be_able_to(:admin, Spree::Store) }
15
+ end
16
+
17
+ context "when not activated" do
18
+ it { should_not be_able_to(:display, Spree::Store) }
19
+ it { should_not be_able_to(:admin, Spree::Store) }
20
+ end
21
+ end
22
+
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::PermissionSets::StoreManagement do
4
+ let(:ability) { Spree::Ability.new nil }
5
+
6
+ subject { ability }
7
+
8
+ context "when activated" do
9
+ before do
10
+ described_class.new(ability).activate!
11
+ end
12
+
13
+ it { should be_able_to(:manage, Spree::Store) }
14
+ end
15
+
16
+ context "when not activated" do
17
+ it { should_not be_able_to(:manage, Spree::Store) }
18
+ end
19
+ end
20
+
@@ -17,6 +17,8 @@ require 'spree/testing_support/preferences'
17
17
  require 'spree/api/testing_support/helpers'
18
18
  require 'spree/api/testing_support/setup'
19
19
 
20
+ require 'cancan/matchers'
21
+
20
22
  Dir[File.join(File.dirname(__FILE__), "support/**/*.rb")].each { |f| require f }
21
23
 
22
24
  RSpec.configure do |config|
metadata CHANGED
@@ -1,35 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solidus_multi_domain
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Solidus Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-22 00:00:00.000000000 Z
11
+ date: 2015-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: solidus
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 1.0.0.pre
20
- - - "<"
17
+ - - "~>"
21
18
  - !ruby/object:Gem::Version
22
- version: '2'
19
+ version: 1.0.0
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- version: 1.0.0.pre
30
- - - "<"
24
+ - - "~>"
31
25
  - !ruby/object:Gem::Version
32
- version: '2'
26
+ version: 1.0.0
33
27
  - !ruby/object:Gem::Dependency
34
28
  name: rspec-rails
35
29
  requirement: !ruby/object:Gem::Requirement
@@ -166,11 +160,11 @@ files:
166
160
  - app/controllers/spree/products_controller_decorator.rb
167
161
  - app/controllers/spree/taxons_controller_decorator.rb
168
162
  - app/helpers/spree/products_helper_decorator.rb
169
- - app/mailers/spree/carton_mailer_decorator.rb
170
- - app/mailers/spree/order_mailer.rb
171
163
  - app/models/spree/line_item_decorator.rb
172
164
  - app/models/spree/order_decorator.rb
173
165
  - app/models/spree/payment_method_decorator.rb
166
+ - app/models/spree/permission_sets/store_display.rb
167
+ - app/models/spree/permission_sets/store_management.rb
174
168
  - app/models/spree/product_decorator.rb
175
169
  - app/models/spree/promotion/rules/store.rb
176
170
  - app/models/spree/shipping_method_decorator.rb
@@ -199,6 +193,7 @@ files:
199
193
  - app/views/spree/admin/trackers/_index_rows.html.erb
200
194
  - app/views/spree/admin/trackers/_store.html.erb
201
195
  - app/views/spree/shared/_google_analytics.html.erb
196
+ - app/views/spree/shared/_multi_domain_sidebar_entry.html.erb
202
197
  - bin/rails
203
198
  - circle.yml
204
199
  - config/locales/en.yml
@@ -236,10 +231,11 @@ files:
236
231
  - spec/controllers/spree/api/shipments_controller_spec.rb
237
232
  - spec/controllers/spree/products_controller_spec.rb
238
233
  - spec/helpers/products_helper_decorator_spec.rb
239
- - spec/mailers/carton_mailer_spec.rb
240
234
  - spec/models/spree/line_item_spec.rb
241
235
  - spec/models/spree/order_spec.rb
242
236
  - spec/models/spree/payment_method_spec.rb
237
+ - spec/models/spree/permission_sets/store_display_spec.rb
238
+ - spec/models/spree/permission_sets/store_management_spec.rb
243
239
  - spec/models/spree/product_spec.rb
244
240
  - spec/models/spree/shipping_method_decorator_spec.rb
245
241
  - spec/models/spree/store_spec.rb
@@ -270,8 +266,29 @@ required_rubygems_version: !ruby/object:Gem::Requirement
270
266
  requirements:
271
267
  - none
272
268
  rubyforge_project:
273
- rubygems_version: 2.2.2
269
+ rubygems_version: 2.2.5
274
270
  signing_key:
275
271
  specification_version: 4
276
272
  summary: Adds multiple site support to Solidus
277
- test_files: []
273
+ test_files:
274
+ - spec/controllers/spree/admin/products_controller_spec.rb
275
+ - spec/controllers/spree/admin/stores_controller_spec.rb
276
+ - spec/controllers/spree/api/line_items_controller_spec.rb
277
+ - spec/controllers/spree/api/products_controller_spec.rb
278
+ - spec/controllers/spree/api/shipments_controller_spec.rb
279
+ - spec/controllers/spree/products_controller_spec.rb
280
+ - spec/helpers/products_helper_decorator_spec.rb
281
+ - spec/models/spree/line_item_spec.rb
282
+ - spec/models/spree/order_spec.rb
283
+ - spec/models/spree/payment_method_spec.rb
284
+ - spec/models/spree/permission_sets/store_display_spec.rb
285
+ - spec/models/spree/permission_sets/store_management_spec.rb
286
+ - spec/models/spree/product_spec.rb
287
+ - spec/models/spree/shipping_method_decorator_spec.rb
288
+ - spec/models/spree/store_spec.rb
289
+ - spec/models/spree/taxon_decorator_spec.rb
290
+ - spec/models/spree/tracker_spec.rb
291
+ - spec/requests/global_controller_helpers_spec.rb
292
+ - spec/requests/template_renderer_spec.rb
293
+ - spec/spec_helper.rb
294
+ - spec/support/factory_overrides.rb
@@ -1,13 +0,0 @@
1
- Spree::CartonMailer.class_eval do
2
- def from_address_with_multidomain
3
- order = @carton.orders.first
4
-
5
- if order.store
6
- order.store.mail_from_address
7
- else
8
- from_address_without_multidomain
9
- end
10
- end
11
-
12
- alias_method_chain :from_address, :multidomain
13
- end
@@ -1,35 +0,0 @@
1
- module Spree
2
- class OrderMailer < BaseMailer
3
- def confirm_email(order, resend = false)
4
- find_order(order)
5
- subject = (resend ? "[#{Spree.t(:resend).upcase}] " : '')
6
- subject += "#{Spree::Store.default.name} #{Spree.t('order_mailer.confirm_email.subject')} ##{@order.number}"
7
- mail_params = {:to => @order.email, :subject => subject}
8
- if @order.store.present? && @order.store.mail_from_address.present?
9
- mail_params[:from] = @order.store.mail_from_address
10
- else
11
- mail_params[:from] = Spree::Store.default.mail_from_address
12
- end
13
- mail(mail_params)
14
- end
15
-
16
- def cancel_email(order, resend = false)
17
- find_order(order)
18
- subject = (resend ? "[#{Spree.t(:resend).upcase}] " : '')
19
- subject += "#{Spree::Store.default.name} #{Spree.t('order_mailer.cancel_email.subject')} ##{@order.number}"
20
- mail_params = {:to => @order.email, :subject => subject}
21
- if @order.store.present? && @order.store.mail_from_address.present?
22
- mail_params[:from] = @order.store.mail_from_address
23
- else
24
- mail_params[:from] = Spree::Store.default.mail_from_address
25
- end
26
- mail(mail_params)
27
- end
28
-
29
- private
30
-
31
- def find_order(order)
32
- @order = order.is_a?(Spree::Order) ? order : Spree::Order.find(order)
33
- end
34
- end
35
- end
@@ -1,41 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::CartonMailer do
4
- let(:mail) { Spree::CartonMailer.shipped_email(carton.id) }
5
-
6
- let(:carton) do
7
- FactoryGirl.create(:carton, inventory_units: order.inventory_units)
8
- end
9
-
10
- let(:order) do
11
- FactoryGirl.create(:order_ready_to_ship, line_items_count: 1)
12
- end
13
-
14
- describe 'from address' do
15
- subject do
16
- mail.from
17
- end
18
-
19
- context 'the order does not have a store' do
20
- let(:order) do
21
- FactoryGirl.create(:order_ready_to_ship, line_items_count: 1, store: nil)
22
- end
23
-
24
- it { is_expected.to eq [Spree::Config[:mails_from]] }
25
- end
26
-
27
- context 'the order has a store' do
28
- let(:order) do
29
- FactoryGirl.create(
30
- :order_ready_to_ship,
31
- line_items_count: 1,
32
- store: store,
33
- )
34
- end
35
-
36
- let(:store) { FactoryGirl.create(:store, mail_from_address: 'store@example.com') }
37
- it { is_expected.to eq ['store@example.com'] }
38
- end
39
- end
40
-
41
- end